jQuery缓存的对象的更新的问题 jquery对象缓存dom 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $(document.body).find(dom)用find检索判断是否有记录 恩,我测试了一下,$(document.body).find(dom) 比 重新用相同的选择器选择dom 快了不少。我再想想,没有其他办法那就用这个了 var $cache1 = $("p"); alert($cache1.length); //1 alert($cache1.attr("aaa")); //123 $("p").remove(); $cache1 = $("p") alert($cache1.length); //1 alert($cache1.attr("aaa")); //123更新下变量,$选出来的是副本,和dom没有直接关系 有没有办法不重新读整个dom,只是检查缓存的dom是否继续存在?为了提高效率 通过对象的parent方法来判断。。被移除的对象没有parent对象<p aaa="123">words1</p><p aaa="123">words2</p><script> var $cache1 = $("p"); alert($cache1.length); //1 alert($cache1.attr("aaa")); //123 $("p:eq(0)").remove(); for (var i = 0; i < $cache1.size(); i++) { if ($cache1.eq(i).parent().size() == 0) alert('元素“'+$cache1.eq(i).html()+'”不在DOM树中'); }</script>see this:http://stackoverflow.com/questions/3086068/how-do-i-check-whether-a-jquery-element-is-in-the-dom 有没有办法不重新读整个dom,只是检查缓存的dom是否继续存在?为了提高效率$cache1=$cache1.not($("p").remove()); 感谢楼上几位我用大循环测试了一下效率 循环次数10万和100万,应该足够 循环顺序也颠倒过了,结果可信$(document.body).find(xxx);的速度,和用相同的选择器重新选取的速度相比在不是最新版本的ie浏览器下快了5~10倍360,谷歌之类js效率高的浏览器下,快了大概1.3倍左右以下测试抛弃iexxx.parent().size(); 、 xxx.parent().length 、$(document.body).find(xxx); 三者的用时62:47:156 xxx.parent().length 最快我去@showbo 给的地址里参考了一下,据说.parent()在某些情况下不一定正确(没测试)jQuery.contains(document, xxx[0])这个应该是jq自带的方法?10万次循环用时是2.81ms100万次循环 webkitxxx.parent().size(); 625毫秒 xxx.parent().length 547ms$(document.body).find(xxx); 1393msjQuery.contains(document, xxx[0]); 31ms感谢各位 根据在本文框内输入数字进行取整 mouseover问题 为什么有的网址中有www,有的网址中就没有www? document.write 或者div的问题 细节决定成败(这段代码哪错了)javascript JS中为什么\t不起作用 JS代码求解 刚刚 弄这个javascript 谁弄看看我的代码 有什么问题么,感觉这种语言也没有调试工具,看不出来什么错误哦 请问怎么使窗口最大化? 散分!散分!谁能帮我调通下面的JS? 文本框失去焦点时,另外一个文本框自动写入一个随机数 这个方法怎么改?
用find检索判断是否有记录
恩,我测试了一下,$(document.body).find(dom) 比 重新用相同的选择器选择dom 快了不少。
我再想想,没有其他办法那就用这个了
alert($cache1.length); //1
alert($cache1.attr("aaa")); //123 $("p").remove();
$cache1 = $("p")
alert($cache1.length); //1
alert($cache1.attr("aaa")); //123更新下变量,$选出来的是副本,和dom没有直接关系
有没有办法不重新读整个dom,只是检查缓存的dom是否继续存在?
为了提高效率
<script>
var $cache1 = $("p");
alert($cache1.length); //1
alert($cache1.attr("aaa")); //123 $("p:eq(0)").remove(); for (var i = 0; i < $cache1.size(); i++) {
if ($cache1.eq(i).parent().size() == 0) alert('元素“'+$cache1.eq(i).html()+'”不在DOM树中');
}
</script>see this:http://stackoverflow.com/questions/3086068/how-do-i-check-whether-a-jquery-element-is-in-the-dom
有没有办法不重新读整个dom,只是检查缓存的dom是否继续存在?
为了提高效率$cache1=$cache1.not($("p").remove());
我用大循环测试了一下效率 循环次数10万和100万,应该足够 循环顺序也颠倒过了,结果可信$(document.body).find(xxx);的速度,和用相同的选择器重新选取的速度相比
在不是最新版本的ie浏览器下快了5~10倍
360,谷歌之类js效率高的浏览器下,快了大概1.3倍左右以下测试抛弃ie
xxx.parent().size(); 、 xxx.parent().length 、$(document.body).find(xxx); 三者的用时
62:47:156
xxx.parent().length 最快我去@showbo 给的地址里参考了一下,据说.parent()在某些情况下不一定正确(没测试)
jQuery.contains(document, xxx[0])
这个应该是jq自带的方法?10万次循环用时是2.81ms100万次循环 webkit
xxx.parent().size(); 625毫秒
xxx.parent().length 547ms
$(document.body).find(xxx); 1393ms
jQuery.contains(document, xxx[0]); 31ms感谢各位