代码之家  ›  专栏  ›  技术社区  ›  Omar Abid

HTML元素的唯一标识符

  •  25
  • Omar Abid  · 技术社区  · 14 年前

    我在DOM中浏览了一些对于每个元素都是唯一的东西(比如数字或字符串);但是DOM很大,我在网上找不到。

    是否有任何属性(在DOM中)仅对该元素是唯一的(除ID之外,也不指定它,但在构建DOM时会出现)

    6 回复  |  直到 10 年前
        1
  •  19
  •   RoToRa    14 年前

    正如佩卡所说,如果你能描述一下你想做什么,那就容易多了。在此之前,这里有两条建议。

    如果出于某种原因确实需要将其表示为字符串,则需要自己分配一个唯一的id。

    var getId = (function () {
      var incrementingId = 0;
      return function(element) {
        if (!element.id) {
          element.id = "id_" + incrementingId++;
          // Possibly add a check if this ID really is unique
        }
        return element.id;
      };
    }());
    
        2
  •  5
  •   Gordon Haim Evgi    14 年前

    我能想到的唯一其他标识符是文档中元素的XPath。

    例如,这个页面标题中的title链接有一个XPath

    /html/body/div[3]/div[2]/div/h1/a
    

    但就像佩卡已经说过的,这取决于你想做什么。而且我不认为你可以很容易地从JavaScript中的DOM获得Xpath,尽管Xpath现在在JS引擎中可用。

        3
  •  2
  •   Pekka    14 年前

    这就是 name 属性,可以通过 document.getElementByName

    我认为不存在其他唯一标识符-即使您可以通过设置属性(如 title

    你到底需要这个做什么?如果你提供更多关于你处境的信息,可能会有人提出建议。

        4
  •  2
  •   DonO    10 年前

        5
  •  1
  •   risto    10 年前

    .data() :

    存储与匹配元素关联的任意数据或返回

        6
  •  1
  •   AsGoodAsItGets    7 年前

    jQuery11230892710877873282 分配了唯一的号码。很明显,每次加载页面时,'jQuery'后面的数字是不同的,我猜jQuery每次尝试访问或操作任何DOM元素时都会在内部生成这个。我对它做了一点修改,看起来jQuery从未访问/操作过的元素可能没有这个属性,但是当您执行类似的操作时 $(elem) 物业就在那里。因此,由于我们同时使用jQuery和lodash,所以我设计了以下函数来返回唯一的ID,而不管元素是否实际具有DOM ID属性。

    _.reduce($(elem), function(result, value, key) { if(_.startsWith(key, 'jQuery')) return value; }, 0)