1

我正在使用 JQuery Ajax 来获取数据。我想在我的代码中包含所有锚标签,如果有人点击标签,它不会触发并调用 Ajax。以下是我的代码,但它不起作用。

$('.one_item a').each(function(){
    $(this).live('click', function(){
        alert($(this).attr('href'));
        return false;
    });
});

我正在使用 JQuery 1.5 版,所以 .live 应该可以工作。有任何想法吗?干杯。

4

2 回答 2

4

.live必须应用于选择器。当您使用 时.each(),您不会获得处理动态添加的元素上的事件的好处,因为您只是在循环运行时对找到的元素进行迭代。

$('.one_item a').live('click', function(){
    alert($(this).attr('href'));
    return false;
});
于 2013-07-11T02:21:51.593 回答
1

您可以.live()直接在选择器上使用:

$('.one_item a').live('click', function(e) {
    e.preventDefault();
    alert($(this).attr('href'));
});

它应该可以工作,请参阅此演示

但是,它一直在迭代alert($(this).attr('href'));。我怎样才能让它只在我点击的项目上触发?

确保您没有在click()其他地方触发事件循环,例如:

$('.one_item a').each(function() {
    $(this).click();
    // other stuff
});
于 2013-07-11T02:19:24.617 回答