source = $("div");
b = source.filter("div");
console.log (source==b);
将返回'false'。
有没有办法让它不分配新的jquery对象,而是修改现有的jquery对象的内容?
我有一个场景,其他对象维护对'source'jquery对象的引用,并希望检查其内容是否已更改。
如果这是不可能的,我想知道什么是“钩”破坏和重新分配的最佳方法,以便其他jquery对象可以被告知新的替换'源'对象在旧的被释放后是什么
想知道这个是否有jquery扩展......
答案 0 :(得分:2)
几乎所有改变DOM元素集的jQuery方法都会返回一个新的jQuery对象 - 它们不会修改当前的jQuery对象。这就是jQuery由于各种原因而构建的方式。
可以从新的jQuery对象中获取元素并将它们放回旧的jQuery对象中,并在更改元素时触发该对象上的方法,从而维护先前的引用并通知它们更改,但是你必须编写代码才能做到这一点。
例如,虽然这通常打破了jQuery设计的范例,而.end()
之类的东西将无法正常工作,但您可以创建一个新方法来设置现有jQuery对象的内容,如下所示: / p>
jQuery.fn.set = function(elems) {
this.length = elems.length;
for (var i = 0; i < elems.length; i++) {
this[i] = elems[i];
}
}
这将允许您这样做:
var source = $("div");
var b = source.filter("div");
source.set(b);
如果要创建此更改的通知,可以使用jQuery custom events来监视和通知更改。或者,您可以向jQuery对象添加一个回调列表,只要.set()
进行更改,它就会在该jQuery对象上调用。
答案 1 :(得分:0)
如果你真的需要跟踪事件,将变量绑定到源或其他对象的变化等,那么我建议你研究一下像backbone.js或knockout.js这样的MVC框架。