0

当用户单击链接时,我正在使用它来生成 AJAX 调用。

$('a').not('.noajax').click(function(event) {
  event.preventDefault();
  AJAXLoad($(this).attr('href'));
}); 

AJAXLoad用于为某些 DIV 生成新内容。问题是,当我生成具有链接的新内容时,新生成的链接的行为与我对上述代码的期望不同。

我知道这可能是由于新添加的内容没有旧属性(遇到与 shadowbox 插件图像链接类似的问题)这一事实造成的,但我在 JS 方面不够熟练,无法修改我的代码以使其正常工作。有什么帮助吗?

4

2 回答 2

2

您需要使用事件委托。

$(document).delegate("a:not(.noajax)","click",function(e){
    // do stuff
})

或 1.7.2+

$(document).on("click","a:not(.noajax)",function(e){
    // do stuff
})

您还应该替换document为您用作目标的任何元素AJAXLoad

于 2013-04-10T21:30:06.110 回答
-2

$.click(function() {})仅适用于在评估该行代码时页面上存在的元素。

你想用$.live('click', function() {})

$.live()将注意出现的任何新元素,它应该适用于。


编辑:明确说明-

$('a').not('.noajax').live('click', function(event) {
    event.preventDefault();
    AJAXLoad($(this).attr('href'));
}); 
于 2013-04-10T21:22:41.560 回答