开发者

how do I find elements that contain a data-* attribute matching a prefix using jquery

开发者 https://www.devze.com 2023-04-10 02:28 出处:网络
I\'m want to create a selector to find elements which have attributes starting with a string. At this point, I\'m assuming this selector does not exist.

I'm want to create a selector to find elements which have attributes starting with a string. At this point, I'm assuming this selector does not exist. Do I need to extend the selector capabilities? Extending jQuery’s selector capabilities by James Padolsey

I need to express something like the Attribute Contains Prefix Selector [name|="value"], but instead of matching "value", I need to match against the name of the attribute, and not the value of the attribute.

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

I'd like to end up with a syntax like this: $('tag(:attr|="data-plugin")') which should find the element tag because it has at least one e开发者_开发百科lement that starts with data-plugin


Well, I guess I'm reading your question differently.

The way I read it, you want to create a custom selector that selects elements that have a given attribute name (or the start of that name).

If so, I think you'd need to iterate of the attributes collection for each element.

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)')
0

精彩评论

暂无评论...
验证码 换一张
取 消