我正在尝试使用live()方法将三个事件绑定到一个选择器,但我似乎无法使其正常工作。
这是我到目前为止所做的工作,直到我添加其他表行:
$("tr:has(td)").live('click',function(event){
//do stuff
}).live('mouseover',function(){
$(this).toggleClass('highlight');
}).live('mouseout',function(){
$(this).toggleClass('highlight');
});
添加其他表行后,只有click事件才有效。如何在添加表格行后让所有三个事件都起作用?
答案 0 :(得分:4)
在您的示例中,您要通过live()
在不是您想要的对象的内容上添加live().live().live()
。这是jQuery处理链接的方式。
您需要做的是:
var $o = $("tr:has(td)");
$o.live('click',function(event){
//do stuff
});
$o.live('mouseover',function(){
$(this).toggleClass('highlight');
});
$o.live('mouseout',function(){
$(this).toggleClass('highlight');
});
答案 1 :(得分:0)
我认为你必须做$("tr:has(td)").live()
三次 - 你不能把它链起来。
答案 2 :(得分:0)
您可以使用事件委派,而不是使用live()
,这更加优雅:
$('table').hover(function(e) {
$(e.target).closest('tr').addClass('highlight');
}, function(e) {
$(e.target).closest('tr').removeClass('highlight');
})