2012-08-14 59 views

回答

1

这是一个三参数变的,你来挑“泡沫”点:

$('body').on('click', '.house td[red]', function() { alert("ok"); }); 

不同的是,与此,在该实际事件处理程序被放置在点下您的控制权(如同也不赞成的.delegate())。你可以选择你喜欢的任何父元素,这在复杂的页面中是一个很好的功能。 (就你而言,例如,你可以把处理程序放在所有“.house”元素而不是body上。)

4
$(".house").on("click", 'td[red]', function() { 
       alert('ok'); 
      }); 

你试过吗?详情请查看in documentation。从那里的例子:

​​

所以你基本上通过一个“容器”的包装。不建议为什么活的原因是,它可以与“上”语法这样写:

$(document).on("click", '.house td[red]', function() { 
       alert('ok'); 
      }); 

,你可以看看是不是很有效。也许还有更多的:)因此它是好的,你想改变它。

+0

'live'绑定到'document',而不是'body',虽然我不确定这有什么区别。 – jbabey 2012-08-14 13:57:34

+0

@ jbabey在发布评论之前,我已经改变了它:)但快速的眼睛! – mkk 2012-08-14 13:59:09

1
$(document).on('click', '.house td[red]', function(){ 
    alert('ok'); 
}); 

Document是我们希望附加到我们的处理程序的静态元素。

第一个参数是事件

二参数是选择

第三个参数是要对选择运行时,在事件被触发的功能。

1

试试这个,

$(document).on("click", ".house td[red]", function() { 
    alert('ok'); 
}); 
3

使用它作为 -

$(document).on("click", ".house td[red]", function() { 
    alert('ok'); 
}); 

的更有效的方法是使用.on()与元素的直接父 -

$('.house').on("click", "td[red]", function() { 
     alert('ok'); 
}); 

here为更好地了解之间的区别和on

+0

我更喜欢mkk的解决方案。它更高效。 – Christoph 2012-08-14 13:57:08

+0

通过这样做,你几乎失去了所有'活力'上的优势。从[jquery文档](http://api.jquery.com/live/):“根据其继承者重写.live()方法很简单;这些是用于所有三种事件附件方法的等效调用的模板:(...)$(document).on(events,selector,data,handler); // jQuery 1.7 +'(...)“ – mkk 2012-08-14 14:01:25

0
$(document).on("click",".house td[red]",function(){ 
    alert('ok'); 
}); 
2

on()是一个全功能的东西对所有的男人功能,能够以不同的方式工作 - 无论是直接和委托的事件。 live()是实现委托事件的一种手段。这是通过一个过滤器参数2,和碰撞回调与on()实现到参数3:

$(".house").on("click", 'td[red]', function() { 
    alert('ok'); 
}); 
1
$(".house td[red]").live("click", function() { 
    alert('ok'); 
}); 

将直接转换成这样:

$(document).on("click", ".house td[red]", function() { 
    alert('ok'); 
}); 

但你可以得到一些通过指定您知道在绑定时存在的最接近容器的性能:

$('#someContainer').on("click", ".house td[red]", function() { 
    alert('ok'); 
}); 
相关问题