在IE11和Chrome中使用javascript`this.closest`

Vij*_*jai 7 javascript jquery

在IE11中,以下代码显示以下错误,但它在Chrome中有效

对象不支持属性或方法'nearest'4:31 PM 09/07/16

assetTable.on("click", "td.clickProgress", function onDataTableRowClicked(event) {
  var tr = this.closest("tr");
  var assetId = tr.id.replace("asset_", "");
  LoadDialog(assetId);
}
Run Code Online (Sandbox Code Playgroud)

但是,当我将其更改$(this)为适用于IE和Chrome时

assetTable.on("click", "td.clickProgress", function onDataTableRowClicked(event) {
  var tr = $(this).closest("tr");
  var assetId = tr.attr('id').replace("asset_", "");
  LoadDialog(assetId);
}
Run Code Online (Sandbox Code Playgroud)

浏览器之间的这种兼容性问题背后的原因

Li3*_*357 15

查看MDN的兼容性表element.closest.根据链接:

这是一项实验性技术由于该技术的规范尚未稳定,请查看兼容性表以了解各种浏览器的使用情况.另请注意,随着规范的更改,实验技术的语法和行为可能会在未来版本的浏览器中发生变化.

element.closest是IE不支持的实验技术.在这种情况下,您使用this未经修改的JavaScript .之所以$(this).closest有效是因为你将它包装成一个jQuery对象,使它使用jQuery最接近的函数.