每次检测到任何更改时调用函数`.change()`

calling function each time any change is detected `.change()`

本文关键字:函数 change 调用 检测 任何更      更新时间:2024-04-08

我的页面上有很多元素。它们绑定到更改事件。我认为有这样30个要素。

其中之一:

$("#set-angle").change(function(){
    //...do stuff
});

现在,每当对任何元素调用任何此类.change()时,我都想调用globalChangeFunc。我知道这是可能的。我在Backbone中使用过它。但要在JQuery中检测到相同的情况。

主干的小片段:

// Removes just the `onChange` callback.
object.off("change", onChange);
// Removes all "change" callbacks.
object.off("change");
// Removes the `onChange` callback for all events.
object.off(null, onChange);
// Removes all callbacks for `context` for all events.
object.off(null, null, context);
// Removes all callbacks on `object`.
object.off();

类似的东西。

尝试

$("#set-angle").change(globalChangeFunc);


为您想要更改事件的所有元素分配一个类。

$(".change_me").change(globalChangeFunc);

如果没有更多信息,我能想到的最通用的解决方案是:

$(document).on('change', 'input, select, textarea', function(){
    globalChangeFunc();
});

您可以将css类分配给所有元素(#set-angle元素也将具有.x类),如:

$(".x").change(function(){
    globalChangeFunc();
    //...do stuff
});

不要使用id(不要告诉我你会分配30个不同的id),而是分配一个公共类$(这个)可以解决你所有的烦恼。

我假设您必须只为正在发生更改的元素分配一个函数。

$.fn.globalChangeFunc= function(){   
        //some code   
};
$(document).on('change','.class',function(){
$(this).globalChangeFunc();
});

如果是通用功能,即不适用于特定元素:

  function globalChangeFunc(){...}
  $(document).on('change','.class',function(){
        globalChangeFunc();
    });

更新:

给你的滑块四个id。在点击时检测那些,并通过将参数传递到公共函数来采取行动。

$(document).on('change', '.class', function () {
switch ($(this).attr('id')) {
    case 'up':
        $(this).globalChangeFunc(appropriate params);
        break;
    case 'down':
        $(this).globalChangeFunc(appropriate params);
        break;
    case 'right':
        $(this).globalChangeFunc(appropriate params);
        break;
    case 'left':
        $(this).globalChangeFunc(appropriate params);
        break;
   }
});