如何访问jQuery中委托的元素?

时间:2012-03-22 02:53:18

标签: jquery

假设我有这个jQuery代码。

$(document).delegate('a[title]', 'click', function(event) {
       var txt = // href value of the link ;
       alert("txt");
})

如何获取链接的href属性的值?我无法使用$(this),因为这会引用$(document)

2 个答案:

答案 0 :(得分:4)

  

$(本)

指的是点击的锚点。

答案 1 :(得分:4)

更好地使用jQuery(1.7+)中的.on(),因为.delegate().bind().live()将被弃用。

DEMO

//literally: bind to "document" a "click" handler for "a"
$(document).on('click', 'a', function(event) {
    var txt = this.href;  //or $(this).attr('href');
    alert(txt);
})

理想情况下,您可能希望将处理程序绑定到您想要影响的所有元素的最近公共父级。将它绑定到document是一个来自元素的长途电话,这会导致严重的性能损失。


  

从jQuery 1.7开始,不推荐使用.live()方法。使用.on()附加事件处理程序。旧版jQuery的用户应该使用.delegate()而不是.live()。

  

从jQuery 1.7开始,.delegate()已被.on()方法取代。但是,对于早期版本,它仍然是使用事件委派的最有效方法。

  • 从1.7开始,jQuery更喜欢.on()而非.bind(),以便灵活处理:
  

从jQuery 1.7开始,.on()方法是将事件处理程序附加到文档的首选方法。对于早期版本,.bind()方法用于将事件处理程序直接附加到元素。处理程序附加到jQuery对象中当前选定的元素,因此这些元素必须存在于调用.bind()的位置。有关更灵活的事件绑定,请参阅.on()或.delegate()中对事件委派的讨论。