如何使用jQuery将相同的处理程序绑定到多个事件

时间:2012-08-24 21:10:31

标签: jquery

只是想知道是否有办法简化以下脚本...感谢您的帮助。

$('#right-arrow').live('click', function(){
        removt();
        callAjaxToCheck();
        show = true;
})

$('#tab').click(function(){
   removeTut();
   callAjaxToCheck();
   show = true;

})

$('left-arrow').live('click', function(){
        removeT();
        callAjaxToCheck();
        show = true;
})

3 个答案:

答案 0 :(得分:6)

始终在代码中包含分号。(在})行后,您将丢失它们。)

我认为最简单的方法是创建一个单独的函数:

function doStuff() {
    removeTut();
    callAjaxToCheck();
    showTutorial = true;
}

$('#eplanner-view-range-right-arrow').live('click', doStuff);
$('#lesson-search-tab').click(doStuff);
$('#eplanner-view-range-left-arrow').live('click', doStuff);

当然,您应该使用比doStuff更具描述性的功能名称。

答案 1 :(得分:2)

使用multiple selector

$('#eplanner-view-range-right-arrow,#lesson-search-tab,#eplanner-view-range-left-arrow').live('click', function(){
   removeTut();
   callAjaxToCheck();
   showTutorial = true;
});

答案 2 :(得分:2)

var func = function() {
    "use strict";
    removeTut();
    callAjaxToCheck();
    showTutorial = true;
};

$("#parent").on("click", "#eplanner-view-range-right-arrow, #eplanner-view-range-left-arrow", func);
$("#lesson-search-tab").click(func);

.live()更改为.on(),因为jQuery 1.7及更高版本已弃用.live()。如果您运行的是旧版本的jQuery,请不要更改.live()