按掩码选择属性

时间:2015-07-15 17:46:25

标签: javascript jquery

说我有这个

<a data-id-5='1'>1</a>
<a data-id-6='1'>2</a>

如何用jquery选择所有属性data-id-*,是否可能?

6 个答案:

答案 0 :(得分:0)

恐怕你无法直接实现它。从jQuery Doc开始,它不支持此类属性选择器。

您可以使用的是$([data-id])。从CSS Spec开始,属性选择器也不支持动态属性名称。

无论如何,将动态值作为属性名称并不是一个好主意。

答案 1 :(得分:0)

您不能使用单个选择器。如果你知道data-id-之后的数字,你可以做一个循环,否则你需要一个特定的元素来查询。

有关各种选择方式的详情,请参阅reference

答案 2 :(得分:0)

然后你可以这样做:

$(function () {
  
    $('a').each(function () {
        $.each(this.attributes, function(i,n){
            if(!n.name.indexOf('data-id-')){
                $('body').append('<p>Name: ' + n.name + ' Value: ' + n.value +'</p>');
            }
        });
    });
  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<a data-id-5='1' data-something-else='test'>1</a>
<a data-id-6='1'>2</a>

答案 3 :(得分:0)

没有直接的方法,但是,你可以做类似的事情

$(function(){


    $("a").each(function(){
        var dataAttributes = [];
        $.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 && this.name.indexOf("data-id-") > -1) {
                dataAttributes.push(this.name);
                // use this.value for value
            }
       });
       console.log(dataAttributes);

    });
});

供参考 - http://plnkr.co/edit/tsUO89YT0tN6ToWBjPu9?p=preview

答案 4 :(得分:0)

试试这个:

$("a").data("id","*").each(function(){
    console.log($(this).text());
});

fiddle

答案 5 :(得分:0)

您可以使用filter()通过从基础DOMElement中检索dataset并将data-*属性名称与预定义的Regex相匹配来实现此目的。试试这个:

&#13;
&#13;
var $a = $('a').filter(function() {
  for (var key in $(this)[0].dataset) {
    if (/^id-\d$/i.test(key))
     return this;
  }
})

// use the matched elements as you require...
$a.addClass('foo');
&#13;
.foo {
  color: #C00;
  font-weight: bold;
  text-decoration: underline;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a>1</a>
<a data-id-5='1'>2</a>
<a>3</a>
<a data-id-6='1'>4</a>
&#13;
&#13;
&#13;