Javascript JQuery选择器是否比DOM属性更安全?

Javascript JQuery选择器是否比DOM属性更安全?,javascript,jquery,Javascript,Jquery,这两个表达式的作用相同,但哪一个更安全或更有效 var indexedCellValue = selectedCell.srcElement.parentElement.cells[index].innerText; var indexedCellValue = $(selectedCell.srcElement).parent('tr').get(0).cells[index].innerText; (包括获取单元格、selectedCell、父行和索引到父行的列中。)纯JavaScrip

这两个表达式的作用相同,但哪一个更安全或更有效

var indexedCellValue = selectedCell.srcElement.parentElement.cells[index].innerText;

var indexedCellValue = $(selectedCell.srcElement).parent('tr').get(0).cells[index].innerText;

(包括获取单元格、selectedCell、父行和索引到父行的列中。)

纯JavaScript总是比jQuery快,但是使用jQuery可以确保代码在大多数浏览器中都能工作。

使用jQuery,您只选择具有
tr
父行的元素。我还认为纯javascript版本可以在Firefox9+上运行,但不能在旧版本上运行

在幕后,如果您查看jQuery的源代码,在
parent()
的定义中(第5666行,从版本1.9.0开始):

您可以看到,它没有使用
parentElement
,而是使用
parentNode
,浏览器更支持这一点(主要不是旧版本的Firefox,事实上,在版本9之前它不支持这一点,如果您想知道两者的区别,请参阅以下答案:)

它还检查该节点是否是
文档\u片段\u节点
(坦白说,如果有人知道我感兴趣,我不知道为什么会这样)

在不支持旧浏览器的2.0开发分支上(感谢pimvdb),他们切换到parentElement():


下面是一个优化的JQuery解决方案

var indexedCellValue = $($(selectedCell.srcElement).parent('tr').children()[index]).text();
不使用parentElement、单元格或innerText


谢谢你的帮助。

它们中没有一个,
innerText
只适用于IE。innerText实际上适用于Chrome。下面是一个使用text()jquery函数$($(selectedCell.srcmelement).parent('tr').get(0.cells[index]).text()的替代方法<代码>单元格也是非标准的。如果您有jQuery,为什么不使用
$(…).sibbines().addBack().eq(index).text()
@pimvdb:我看不出standardIs
selectedCell
怎么不是一个事件对象,或者它怎么有
srcElement
属性?有更好的方法在jQuery中获取父对象etc吗?对我来说,使用get(0)似乎违背了使用JQuery的目的。您可以通过使用
来避免获取父级。同级(':first')
这些提交是针对不支持IE的JQuery 2.0的
parent: function( elem ) {
    return elem.parentElement;
},
var indexedCellValue = $($(selectedCell.srcElement).parent('tr').children()[index]).text();