【问题标题】:jQuery events... how much code should go inside?jQuery 事件...里面应该有多少代码?
【发布时间】:2011-12-11 05:33:57
【问题描述】:

如果我将更改事件附加到很多项目,比如大型表单上的每个复选框,然后基于此处理规则,我应该执行单独的函数而不是在事件内的匿名函数中使用该代码吗?

$(".magic_checkbox").change(function(event){
  //somewhat lengthy code here
});

这是为每个复选框创建一个单独的 JavaScript 函数对象,还是它们都将使用一个指针?如果它们都是重复的,那在宏伟的计划中会很重要吗?

【问题讨论】:

    标签: javascript jquery performance jquery-events


    【解决方案1】:

    只有一个匿名函数,但您可能需要考虑委托事件方法。在 .magic_checkbox 元素的父对象上创建单个事件处理程序。然后执行以下操作:

    $("#parentObjectId").on("change", ".magic_checkbox", function(event){
        // your somewhat lengthy code here
    });
    

    或者...

    $("#parentObjectId").on("change", ".magic_checkbox", function(event){
        somewhatLengthyMethod();
    });
    
    function somewhatLengthyMethod() {
        // your somewhat lengthy code here
    }
    

    在两者之间进行选择只是一个偏好问题。关键是事件委托,这会导致更少的事件处理程序,因此更高效。

    【讨论】:

    • 比起$("#parentObjectId").on("change", ".magic_checkbox", function(event) { somewhatLengthyMethod(); });$("#parentObjectId").on("change", ".magic_checkbox", somewhatLengthyMethod); 可能更可取。
    • @icktoofay,真的。我喜欢!
    猜你喜欢
    • 1970-01-01
    • 2016-09-12
    • 2017-04-21
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    相关资源
    最近更新 更多