关于jquery html()的问题
- HTML code
<html><head><script src="jquery.js"></script></head><body><table id="mytable" border="1"><tbody> <tr><td id="1">1</td><td id="7">7</td></tr> <tr><td id="2"><input type="text" value="xxx" /></td><td id="8">8</td></tr> <tr><td id="3"><input type="button" value="yyy" /></td></tr> <tr><td id="4">4</td></tr> <tr><td id="5">5</td></tr> <tr><td id="6">6</td></tr></tbody></table><script> var td_query=$("tbody>tr>td:not(:has(input))"); //alert(td_query.length); // 输出6 $("tbody>tr>td:not(:has(input))").dblclick(function(){ $(this).html("<input type='text' value='test' />"); alert(td_query.length); });</script></body></html>
我这样写就不行了。 双击td 在td中新增一个 input的框 在双击生成的这个input框 还是会弹出信息
我的目的是: 双击td 后当前td 中新增一个input框。 当时如果当前td已经包含了input框。双击该input 要求不会执行该双击事件
这是为什么?
[解决办法]
$("tbody>tr>td:not(:has(input))").dblclick 楼主这一句已经对符合条件的元素绑定了handler,即使后面改变了元素中的内容,该handler还是绑定在该元素上并没有改变。
其实可以使用jquery的one函数为元素绑定一次性的handler,这样就没有问题,也可以在你上面写的handler中html后面闪出dbclick的处理函数,但是比较推荐第一种方法。
- JScript code
$("tbody>tr>td:not(:has(input))").one('dbclick',function(){ $(this).html("<input type='text' value='test' />"); alert(td_query.length); });