在jquery上以编程方式正确获取删除元素后的属性

时间:2016-03-19 17:34:46

标签: jquery variables store pseudo-element attr

这个问题是要知道是否存在跨浏览器兼容性,并且如果它确实总是在删除后仍然获取属性值,例如,在这两种情况下:

var rel = $(this).closest("tr").remove().attr("rel");

var $deltr = $(this).closest("tr").remove();
// code using $deltr to store it
var rel = $deltr.attr("rel");

感谢。

2 个答案:

答案 0 :(得分:1)

根据我的理解,你不能在删除元素后获取attr。

一旦remove() d,该元素不再存在于DOM中且无法恢复(即使已分配给变量),也无法探测其属性。

在jQuery 1.4中,创建detach() method是为了从DOM中删除一个元素,但仍然可以将其保留用于恢复。但不是remove()

This jsFiddle允许您尝试在删除元素之前和之后获取rel属性。

请注意,rel=是锚<a>标记not of a table tr的属性,但我假设您知道自己在做什么。

答案 1 :(得分:0)

如果我错了,请纠正我。

根据我的理解,你会问这种方法之间的区别......

var rel = $(this).closest("tr").remove().attr("rel");

vs这种做法?

var $deltr = $(this).closest("tr").remove();
// code using $deltr to store it
var rel = $deltr.attr("rel");

两者之间的差异取决于谁的编码。变量的重点很多,它更容易存储更大的字符串,方法函数等:而不是多次调用它。

此外,您可能会注意查看ASI (Automatic Semicolon Insertion)(如果您不想阅读,可以watch this video代替)

两者之间的唯一区别取决于用户如何编写应用程序,因为每个人都有自己的风格。在这种情况下,$deltr将在整个应用程序中与rel一起使用,但它们可能并不总是一起使用

var $deltr = $(this).closest("tr").remove();
// code using $deltr to store it
var rel = $deltr.attr("rel");