Как найти элементы, содержащие атрибут data- *, соответствующий префиксу, используя jquery

Я хочу создать селектор, чтобы найти элементы, у которых есть атрибуты, начинающиеся со строки. На этом этапе я предполагаю, что этот селектор не существует. Мне нужно расширить возможности селектора? Расширение возможностей выбора jQuerys от James Padolsey

Мне нужно выразить что-то вроде Атрибута Содержит Селектор префикса [name | = "value" ], но вместо того, чтобы сопоставлять "значение", мне нужно сопоставить имя атрибута, а не значение атрибута.

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

Я бы хотел получить синтаксис: $('tag(:attr|="data-plugin")'), который должен найти элемент tag, поскольку он имеет хотя бы один элемент, начинающийся с data-plugin

Ответы

Ответ 1

Ну, я думаю, я читаю ваш вопрос по-другому.

Как я его читаю, вы хотите создать настраиваемый селектор, который выбирает элементы, которые имеют заданное имя атрибута (или начало этого имени).

Если это так, я думаю, вам нужно будет итерации коллекции 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)')