javascript – jQuery:检查绑定元素是否存在更好的性能?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – jQuery:检查绑定元素是否存在更好的性能?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1508字,纯文字阅读大概需要3分钟。
内容图文
![javascript – jQuery:检查绑定元素是否存在更好的性能?](/upload/InfoBanner/zyjiaocheng/725/6e38bcebf1624140b7972297af1c8935.jpg)
我想知道……让我们想象一下我的代码是这样的:
$('#specific-element').change(some_long_and_ajax_function);
带有绑定ID的元素在我的所有页面上都不存在.仅在其中一些.我确实检查这个元素是否像这样存在:
if($('#specific-element').length > 0){
$('#specific-element').change(some_long_and_ajax_function);
// There can be more stuff related to this specific element
}
我的问题:值得吗?绑定处理程序对于不存在的元素是否有任何性能影响,或者检查长度是否比它更糟?或者它基本相同,我有两个无用的行?你会推荐什么?第一个保持代码良好和清晰,但我不确定这对于jQuery是否“健康”有几十个这样的例子.谢谢.
解决方法:
如果元素不存在,jQuery会优雅地失败,在内部它会自己检查以查看元素是否存在,如果不存在,则事件处理程序不会附加等.
jQuery()调用jQuery.fn.init来检查传递的参数是否是一个字符串,在你的情况下它是,然后用正确的上下文调用jQuery.fn.find,并在里面调用它
var i, ret = [],
self = this,
len = self.length;
... code
for (i = 0; i < len; i++) {
// add event handlers
}
所以如果没有运行它的元素,循环永远不会运行,所以不需要自己检查,只需让jQuery处理它.
编辑:
当你调用$(‘#specific-element’).length你已经调用了$(),它在内部执行所有常规操作并返回一个类似数组的jQuery对象,它具有一个length属性,而这正是$(‘#specific-element’).change …同样,如果集合中没有元素,jQuery的on()也会很快返回,所以没有区别.
如果你真的关心速度,你会做类似的事情
var el = document.getElementById('specific-element');
if ( el !== null ) {
el.addEventListener('change', fn, false);
}
但实际上没有理由,只需用通常的方式添加jQuery的事件处理程序,而不检查元素是否存在,几乎每个网站都存在,并且它工作得很好.
内容总结
以上是互联网集市为您收集整理的javascript – jQuery:检查绑定元素是否存在更好的性能?全部内容,希望文章能够帮你解决javascript – jQuery:检查绑定元素是否存在更好的性能?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。