几乎所有改变 DOM 元素集的 jQuery 方法都会返回一个新的 jQuery 对象——它们不会修改当前的 jQuery 对象。出于各种原因,这就是 jQuery 的架构方式。
可以从新的 jQuery 对象中获取元素并将它们放回旧的 jQuery 对象中,并在更改元素时触发该对象上的方法,从而维护以前的引用并通知它们发生更改,但是你' d 必须编写代码来做到这一点。
例如,尽管这通常会破坏 jQuery 设计的范式,并且类似的东西.end()
将不再正常工作,但您可以创建一个新方法来设置现有 jQuery 对象的内容,如下所示:
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 自定义事件来监视和通知更改。或者,您可以只向 jQuery 对象添加一个回调列表,该列表将在该 jQuery 对象.set()
进行更改时被调用。