【问题标题】:On jquery is programmatically correct get an attribute after removed the element在 jquery 上以编程方式正确在删除元素后获取属性
【发布时间】:2016-03-19 17:34:46
【问题描述】:

这个问题是想知道是否有跨浏览器的兼容性,是否真的确定即使去掉了属性值也总是能拿到,比如这两种情况:

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

谢谢。

【问题讨论】:

  • 不确定问题是什么?从文档中删除该元素后,您是否将元素的属性存储为变量?没有返回预期结果吗?
  • 除了在第二种方法中使用多行之外,这两种方法有什么区别?

标签: jquery variables store pseudo-element attr


【解决方案1】:

据我了解,删除元素后您无法获取 attr。

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

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

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

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

【讨论】:

    【解决方案2】:

    如果我可能弄错了,请纠正我。

    据我了解,您问的是这种方法有什么区别......

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多