如何组合这些jQuery .on()函数?

时间:2013-09-17 18:42:42

标签: javascript jquery dom modal-dialog

这是我的代码。滑动适用于文档中的任何位置,单击用于关闭img,但它们执行相同的代码。有什么建议?这不是一个太大的交易,但如果可以的话,我想要更小,更清洁的代码。这是一个模态类型的窗口。

                 $(document).on("click", "#close", function () {
                     ttl.html(docTitle + air);
                     window.history.pushState({}, docTitle + air, docURL);
                 }).on("swipeleft swiperight", function () {
                     ttl.html(docTitle + air);
                     window.history.pushState({}, docTitle + air, docURL);
                 });

2 个答案:

答案 0 :(得分:4)

这里没有理想的解决方案,所以你可以这样做:

var f = function () {
      ttl.html(docTitle + air);
      window.history.pushState({}, docTitle + air, docURL);
}
$(document).on("click", "#close", f).on("swipeleft swiperight", f);

如果您在全球范围内或大型范围内执行此操作,您可以将整体封装在IIFE中以保持外部范围更清洁:

(function(){
    var f = function () {
          ttl.html(docTitle + air);
          window.history.pushState({}, docTitle + air, docURL);
    }
    $(document).on("click", "#close", f).on("swipeleft swiperight", f);
})();

答案 1 :(得分:1)

您可以创建一个功能,只需调用它。

function foo(ttl, docTitle, air, docURL) {
   ttl.html(docTitle + air);
   window.history.pushState({}, docTitle + air, docURL);
}

只需在on语句中调用它。

$(document).on("click", "#close", 
        foo(ttl, docTitle, air, docUrl)).
    on("swipeleft swiperight", 
        foo(ttl, docTitle, air, docUrl));