我的页面上有很多元素。它们绑定到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();
类似的东西。
答案 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;
}
});