当使用jquery live功能时,按钮将被触发两次

Button will be triggered twice when using jquery live function

本文关键字:两次 按钮 jquery live 功能      更新时间:2023-11-13

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

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

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

他们的CenterPagination函数是在我的网站页面加载期间调用的
"changed" 触发选择框时,会调用SearchColumnPaging

之所以"点击"他们,是因为在这两列上,我有一个类.pagination,它有一个按钮。

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

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

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

请指导我。您的帮助将得到极大的感谢和回报!

谢谢!:-)

我更喜欢避免使用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();
});