Ral*_*alk 30 javascript variables jquery dom jquery-selectors
我昨天遇到了一个问题,一个jquery-selector我分配给一个变量,这让我很生气.
这是一个带有testcase的jsfiddle:
另一个测试:将一个li元素添加到domtree并记录obj和.elem..elem确实有新的li而obj没有,因为它仍然是旧的快照
有没有办法用新内容更新此obj?我不想做一个新的obj,因为在我的应用程序中有很多信息保存在该对象中,我不想破坏...
Esa*_*ija 60
是的,这是一个快照.此外,从页面DOM树中删除元素并不会神奇地消除对元素的所有引用.
您可以像这样刷新它:
var a = $(".elem");
a = $(a.selector);
Run Code Online (Sandbox Code Playgroud)
小插件:
$.fn.refresh = function() {
return $(this.selector);
};
var a = $(".elem");
a = a.refresh();
Run Code Online (Sandbox Code Playgroud)
这个简单的解决方案不适用于复杂的遍历.您将不得不为该.selector属性创建一个解析器来刷新这些快照.
格式如下:
$("body").find("div").next(".sibling").prevAll().siblings().selector
//"body div.next(.sibling).prevAll().siblings()"
Run Code Online (Sandbox Code Playgroud)
就地迷你插件:
$.fn.refresh = function() {
var elems = $(this.selector);
this.splice(0, this.length);
this.push.apply( this, elems );
return this;
};
var a = $(".elem");
a.refresh() //No assignment necessary
Run Code Online (Sandbox Code Playgroud)