fms*_*msf 8 javascript jquery dom
我通常将我的jQuery对象存储在变量中,以避免选择器遍布整个地方.
当我更改DOM时,我想让对象自行更新.删除未使用的引用并使用新引用进行更新.我怎样才能做到这一点?理想情况下,我想用以下逻辑做一些事情:
var test = $('div.bar');
console.log(test);
>> [<div class="bar" id="b1"></div>, <div class="bar" id="b2"></div>]
$('#b2').remove();
console.log(test);
>> [<div class="bar" id="b1"></div>, <div class="bar" id="b2"></div>]
test.update();
console.log(test);
>> [<div class="bar" id="b1"></div>]
$('body').append('<div class="bar" id="b3"></div>');
console.log(test);
>> [<div class="bar" id="b1"></div>]
test.update();
console.log(test);
>> [<div class="bar" id="b1"></div>, <div class="bar" id="b3"></div>]
Run Code Online (Sandbox Code Playgroud)
这个插件解决了这个问题:
(function ( $ ) {
$.fn.update = function(){
var newElements = $(this.selector),i;
for(i=0;i<newElements.length;i++){
this[i] = newElements[i];
}
for(;i<this.length;i++){
this[i] = undefined;
}
this.length = newElements.length;
return this;
};
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
只需将其添加到您的代码中即可:
var $foo = $("div.bar"); // selects all "div.bar"
(... many dom modifications ...)
$foo.update();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6880 次 |
| 最近记录: |