-2

我想获取 HTML Dom 中的所有元素,它们具有具有特定值的任何属性。

例如 -

<ul style="width:150px;" id="RadioButton1">
   <li style="width:150px;"><input type="radio" name="RadioButton1"><label>Option 1</label></li>
   <li style="width:150px;"><input type="radio" name="RadioButton1"><label>Option 2</label></li>    
   <li style="width:150px;"><input type="radio" name="RadioButton1"><label>Option 3</label> </li>
</ul>

我想获取任何属性中包含“RadioButton1”的所有元素。意味着我想选择UL所有三个RadioButtons

注意:上面的 HTML 我使用UL-LI了结构,但实际情况却大不相同。所以请不要给出完全赞成的答案UL-LI。我想要全球解决方案。

是否存在任何选择器来选择所有类型的属性?

是否可以使用这种方法选择元素?

提前致谢……!!!

4

6 回答 6

2

可以通过过滤每个元素并检查其属性来完成:

小提琴

var elements = $('*').filter(function () {
    return $(this.attributes).filter(function(){
        return this.nodeValue == 'RadioButton1'; 
    }).length;
});
于 2014-04-22T10:45:58.317 回答
1

尝试这个:

$("*").each(function() { //check all elements inside DOM
    var elem = $(this);
  $.each(this.attributes, function() {
      if(this.value=='RadioButton1'){
          console.log(elem); //your code goes here. elem is nothing but element 
                               //with value RadioButton1 in any attribute
      }
  });
});

注意:检查控制台的元素。

演示

于 2014-04-22T10:52:12.990 回答
0

attributes 属性包含所有这些:

$(this).each(function() {
  $.each(this.attributes, function() {
    // this.attributes is not a plain object, but an array
    // of attribute nodes, which contain both the name and value
    if(this.specified) {
      if(this.value == 'RadioButton1')
      {
           alert(this.name);
      }
    }
  });
});
于 2014-04-22T10:51:20.163 回答
-1
$("input[name='RadioButton1'],ul[id='RadioButton1']")
于 2014-04-22T10:36:15.600 回答
-2

$('[name="RadioButton1"]')将选择具有“RadioButton1”作为其name属性的所有项目。

$('[id="RadioButton1"]')将选择具有“RadioButton1”作为其id属性的所有项目。请记住,对于 ID 属性,任何给定 ID 都应该只有一个项目。

$('[name="RadioButton1"],[id="RadioButton1"]')会给你组合列表。

请记住,ID 和 Name 属性都设置为“RadioButton1”的项目将被添加两次。

如果要搜索第三个属性,只需将该属性添加到以逗号分隔的选择器列表中即可。

于 2014-04-22T10:34:43.150 回答
-2

为此,您应该使用 data-types="RadioButton"

然后使用

$('input[data-types=RadioButton]')
于 2014-04-22T10:34:57.903 回答