1

我知道你可以像这样使用 jQuery 绑定点击事件:

$('a').click(function(){});

但是动态添加的 html 元素呢?可以说我有div以下内容:

<div>
    <a href='location.html'>location</a>
</div>

现在我打电话:

$('a').click(
      function(){ 
          console.log("going to " + $(this).attr('href')); 
          return true;
      });

这会很好。但如果沿线某处我打电话

$('div').("<a href='location2.html'>location2</a>");

如果没有将该事件处理程序显式绑定到该事件,那么事件处理程序将接受它。

是否可以在a添加新元素时重新绑定。或者更好的是,当location.href属性发生变化时,我可以每次都向它添加一个 get 参数。

例如,如果我绑定到a元素上的单击事件,则事件处理程序将是:

function(){
    var newid = parseInt(Obj.Request('pageid'), 10) + 1;
    location.href = $(this).attr('href') + '?pageid=' + newid.toString();
    return false;
}

假设Obj.Request是一个返回 get 参数的函数。(我已经有了这个)。

4

5 回答 5

4

以这种方式使用它:

$(document).on( 'click', 'a', function() {
      console.log("going to " + $(this).attr('href')); 
      return true;
});

处理你的小提琴链接。

于 2013-03-20T01:24:59.787 回答
2

您想使用该功能.on

于 2013-03-20T01:20:52.907 回答
2
$('a').on('click', function() {
    //works on non dynamic elements present at page load
});

$('#some_non_dynamic_parent_ID').on('click', 'a', function() {
    //works on dynamic elements added later
});
于 2013-03-20T01:24:48.817 回答
1

您想使用.on(), 但作为委托方法。

将它绑定到最近的静态父级 - 对于这个示例,我将只使用body.

$('body').on('click', 'a', function(e){
  e.preventDefault();
});

这将等到事件冒泡到body元素并检查事件的原始目标是什么 - 如果它是一个a元素,它将触发处理程序。

于 2013-03-20T01:24:35.123 回答
1

如果您使用 jquery 高于 1.7 版本,则可以使用 .on() 或 live() 函数。关于这些功能的区别,您可以在本文中阅读

于 2013-03-20T01:25:49.843 回答