如何使用jquery查找包含与前缀匹配的data- *属性的元素

时间:2011-09-29 19:26:59

标签: javascript jquery

我想创建一个选择器来查找具有以字符串开头的属性的元素。此时,我假设这个选择器不存在。 我是否需要扩展选择器功能? James Padolsey Extending jQuery’s selector capabilities

我需要表达类似于包含前缀选择器[name | =“value”]的内容,但不是匹配“value”,而是需要匹配属性的名称,而不是属性的值。

<tag data-plugin-option1="val1" data-plugin-option2="val2" />

我想最终得到这样的语法: $('tag(:attr|="data-plugin")')应找到元素tag,因为它至少有一个以data-plugin开头的元素

1 个答案:

答案 0 :(得分:11)

嗯,我想我的方式不同。

我读它的方式,你想创建一个自定义选择器,选择具有给定属性名称(或该名称的开头)的元素。

如果是这样,我认为您需要为每个元素迭代attributes集合。

DEMO: http://jsfiddle.net/GgmM7/

$.extend($.expr[':'],{
    attrNameStart: function(el,i,props) {

        var hasAttribute = false;

        $.each( el.attributes, function(i,attr) {
            if( attr.name.indexOf( props[3] ) !== -1 ) {
                hasAttribute = true;
                return false;  // to halt the iteration
            }
        });

        return hasAttribute;
    }
});

$('img:attrNameStart(data-plugin)')