我真的想要一种方法来观察节点的变化并根据这些变化触发功能。
我要将“更改”定义为:
现在也许我会以错误的方式解决这个问题,但我的想法是对预先存在的jQuery方法进行修复,这些方法负责上面列出的修改,并添加一些在所有节点上触发事件的代码在集合中,以及他们的祖先(模拟冒泡事件)。
这样的事情:
$.fn.attrMOD = $.fn.attr;
$.fn.attr = function() {
this.each(function(){
$.fn.trigger.call($(this).parents().add(this), 'modify', { changeType: 'attr', originalTarget: $(this) });
});
return $.fn.attrMOD.apply(this, arguments);
};
我会为许多方法(css,bind,unbind等)执行此操作。
因此,要订阅此“修改”事件,您可以执行以下操作:
$('div').bind('modify', function() { console.log('Div was modified') })
//this would trigger it
$('div').attr('hello', 'world');
所以有几个问题:
感谢阅读!
答案 0 :(得分:0)
看起来它对我有用......但是对于读取此线程的任何人(因为我确信提问者都知道)可能值得注意,只有在属性被修改时才会触发修改事件通过jQuery的attr(key,val)方法。任何改变属性的尝试都不会启动它。
另外......您需要确保在.css(x,y)
和.width(val)
,.height(val)
以及.addClass(val)
,.removeClass(val)
添加一个脱离我的头顶......可能还有更多。你可能会想要做很多事情。
我对“为什么?”更好奇。你想这样做......哈哈。