引用没有ID的元素但有一个项目 - 如何?

时间:2012-10-29 18:18:08

标签: javascript jquery

  

可能重复:
  jquery v1.3.2 find element by attribute
  Is it possible to grab a link by its href if it doesn’t have a class or ID?

我的问题围绕着一个元素的属性(不能使用ID,因为我可以'确定那些将是唯一的) -

例如,我有这个:

<a href="someurl.com">Link</a>

但我可以动态注入,并且我可能有一种可行/快速/有效的方式在dom中引用它(请记住,会有很多这样的链接)。

<a href="someurl.com" data-access-label="000998">Link</a>

所以,如果这样做快速/有效,我会通过哈希重复并好奇吗?

data = {
  '98789' : 'yeah',
  '871637':'cool',
  '00198789' : 'sure thing',
  '871609':'no way',
  '000998':'alright'
}

所以,对我而言似乎效率低下。然后通过所有链接然后找到数据访问标签值,然后是什么?我可以绑定那些hrefs或者什么东西,这样一旦我运行我的函数 - 它看起来像这样

 <div>
   <a href="someurl.com" data-access-label="000998">Link</a> alright
       <span> <a href="someurl.com" data-access-label="871637">Link</a> cool</span>
 </div>

在任何给定时间,数据哈希中只有40个项目,所以也许我可以通过它“.ee”,并将密钥与那些数据访问标签中的值匹配?但我的想法可能是直接访问该项目,而不是通过href重复。

3 个答案:

答案 0 :(得分:4)

使用jQuery的attribute selector

var link = $('[data-access-label*="' + identifier + '"]');

alert(link.text());

答案 1 :(得分:2)

$( “一个[数据访问标签]”)

这将返回具有该属性的所有元素的数组。

然后,您可以调用.each()进行进一步处理。

http://api.jquery.com/has-attribute-selector/

答案 2 :(得分:0)

$("a").each(function(i) { 
    if (typeof $(this).attr('name') !== 'undefined' && $(this).attr('name') !== false) {
        // do work
    };
})
  

OR

$("a").each(function(i) { 
    if (typeof $(this).data('access-label') == "000998") {
        // do work
    };
})
  

OR

$('[data-access-label*="' + indexValue + '"]').click(function(e) { /* do work */ });