JQuery 选择器是否比 DOM 属性更安全?
Are JQuery selectors safer than DOM properties?
这两个表达式做同样的事情,但哪一个更安全或更有效?
var indexedCellValue = selectedCell.srcElement.parentElement.cells[index].innerText;
var indexedCellValue = $(selectedCell.srcElement).parent('tr').get(0).cells[index].innerText;
(获取单元格、选定单元格、父行和索引到该父行上的列。
纯 JavaScript 总是比 jQuery 快,但使用 jQuery,您可以确保代码可以在大多数浏览器中运行。
使用 jQuery,您只选择具有tr
父元素的元素。我也认为纯javascript版本可以在Firefox 9+上运行,但不能在较旧的版本上运行。
在引擎盖下,如果你看看jQuery的源代码,在parent()
的定义(第5666行,从版本1.9.0开始):
parent: function( elem ) {
var parent = elem.parentNode;
return parent && parent.nodeType !== 11 ? parent : null;
},
你看它不用parentElement
,而是parentNode
,那更受浏览器支持(主要是不是旧版的火狐,其实在版本9之前是不支持的,如果你想知道两者的区别,看这个答案:DOM parentNode和parentElement的区别)。
它还检查节点是否是DOCUMENT_FRAGMENT_NODE
节点(坦率地说,我不知道为什么会这样,如果有人知道我会感兴趣的话)。
在不支持旧浏览器的 2.0 开发分支上(感谢 pimvdb),他们切换到 parentElement(减少遍历模块 - 提交):
parent: function( elem ) {
return elem.parentElement;
},
这是一个优化的JQuery解决方案
var indexedCellValue = $($(selectedCell.srcElement).parent('tr').children()[index]).text();
不使用 parentElement、单元格或 innerText。
感谢您的帮助。
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 全局变量和全局对象的属性之间有什么区别吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 序列化数据属性中对象的最可靠方法
- 选择所有没有值属性的单选按钮的最安全方法
- HTML 文本框值属性是否安全免受 XSS 攻击
- 将函数引用用作对象属性/键是安全的
- 通过JS更改TYPE属性.这是安全问题吗
- 无法读取属性'值'如果内容安全策略为null
- addslashes()在HTML属性中防止XSS是否安全?
- 将属性附加到函数对象是否安全/可接受?
- ES6/2015中的null安全属性访问(和条件赋值)
- 安全-可以创建具有未知属性的对象
- 谷歌分析javascript安全-属性ID公共
- 如何以安全的方式在dojo gfx形状上定义自定义属性
- 是否有针对 Angular 2 的样式属性清理的安全解决方法
- JQuery 选择器是否比 DOM 属性更安全?
- 为什么我可以用jQuery从表中获取值属性,使用它安全吗?
- 设计模式- JavaScript.安全提取深层(可能不存在)对象属性的通用函数