使用jquery live函数时,按钮将被触发两次

时间:2012-07-18 05:17:15

标签: javascript jquery ajax

我的应用程序中有2列 在第一列,它在网站加载期间加载。

如果选择框已"changed",则会在第二列加载 这里的问题是我的代码是这样的:

jQuery(".pagination").live("click",function(event){
    var pId = jQuery(this).attr("id");
    if( pId == "centerPagination")
        CenterColumnPagination();
    else if( pId == "searchPagination" )
        SearchColumnPagination();
});

在我的网站页面加载期间调用它们的CenterPagination函数。
"changed"

触发选择框时,将调用SearchColumnPagination

之所以“点击”他们是因为在这2列我有一个有.pagination的班级。

我的问题在于,由于live代码,当我点击我的第一列时,按钮似乎被触发两次,我注意到一个,因为当我检查firebug的控制台时,ajax调用已被调用两次,因此,我得到了重复的结果。

同样在第二列,当我changed选择框(分页类出来),然后点击分页类的按钮,它也被触发两次。与第1列结果相同。

我想要的是不要让这些按钮被触发两次,就像正常点击一样。就像我点击它一样,它应该只调用我的ajax一次。

请指导我。非常感谢您的帮助和奖励!

谢谢! : - )

1 个答案:

答案 0 :(得分:1)

我更愿意避免使用live。而不是我使用delegate

$('#column-1').delegate('.pagination', 'click', function () {
    CenterColumnPagination();    
});

$('#column-2').delegate('.pagination', 'click', function () {
    SearchColumnPagination();    
});

或者,如果您不想识别列,可以这样做:

jQuery('body').delegate(".pagination", "click", function(event) {
    var pId = jQuery(this).attr("id");
    if( pId == "centerPagination")
        CenterColumnPagination();
    else if( pId == "searchPagination" )
        SearchColumnPagination();
});