读书人

关于jquery html()的有关问题

发布时间: 2012-05-16 11:12:12 作者: rapoo

关于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);    }); 

读书人网 >JavaScript

热点推荐