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

时间:2013-12-05 14:00:31

标签: javascript jquery onchange

我的页面上有很多元素。它们绑定到change事件。我认为有30个元素。

其中一个:

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

现在我想每次在任何元素上调用任何这样的.change()时调用globalChangeFunc。 我知道这是可能的。我在Backbone中使用过它。但要在JQuery中检测相同内容。

Backbone的小片段:

// 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();

类似的东西。

4 个答案:

答案 0 :(得分:1)

尝试

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

<小时/> 为要更改事件的所有元素指定一个类。

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

不要使用id(不要告诉我你将分配30个差异&#39; s。)而不是指定一个共同的类。 $(this)会照顾你所有的烦恼。

我假设您必须仅为正在进行更改的元素分配函数。

$.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;
   }
});