Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jQuery将同一处理程序绑定到多个事件_Jquery - Fatal编程技术网

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

如何使用jQuery将同一处理程序绑定到多个事件,jquery,Jquery,只是想知道是否有办法简化以下脚本…感谢您的帮助 $('#right-arrow').live('click', function(){ removt(); callAjaxToCheck(); show = true; }) $('#tab').click(function(){ removeTut(); callAjaxToCheck(); show = true; }) $('left-arrow').live('cli

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

$('#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;
})
使用:


.live()
更改为
。从jQuery版本1.7+开始,live()
已被弃用。如果您运行的是较旧版本的jQuery,请不要更改
.live()

始终在代码中包含分号。(在
}行之后缺少分号)

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

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

更具描述性的函数名。我没有看到
if
语句。编辑标题可以更好地显示问题的意图,并帮助其他人搜索此类建议。这可能不完全相同
.live
授权了事件,但实际上没有。。既然还没有delegation@wirey在我再次编辑并重写了一些内容后犯了一个错误,现在应该可以了。对
.live
的调用对所有元素使用委托事件,而原始代码没有。s/he希望在某些情况下绑定到live,然后在其他情况下单击。@invertdspear:但是因为它们都是ID(因此是唯一的),可以将它们全部委托。@jnylen:在这种情况下没有区别。doStuff是一个完全合法的函数名,所以它是foo()、blah()和jfdklsfjaksdf()@这些都是糟糕的函数名。是的,它们在技术上是合法的,但仅仅根据技术上合法的内容做出这些决定是一个被证明的错误。
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);
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);