2016-03-19 13 views
0

这个问题是要知道是否有跨浏览器的兼容性,如果它确实总是得到属性值,即使它被删除后,例如,在这些两种情况:在jquery上编程正确得到一个属性后删除元素

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"); 

感谢。

+0

不确定是什么问题?将元素从文档中移除后,是否将元素的属性存储为变量?预计结果没有返回? – guest271314

+0

除了在第二种方法中使用多行之外,这两种方法之间有什么区别? – stjepano

回答

1

用我的理解是,该元素已被删除后,您不能得到ATTR。

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

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

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

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

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");