@Moob aproximation к JQuery attrBegins плагин возвращает имя атрибута (строку), когда совпадают ... одного элемента (игнорируя несколько совпадений). Я добавил код, чтобы вернуть JQuery Collection с соответствующими элементами.
Вот код:
(function($) {
$.fn.attrBegins = function(s) {
var matched = [];
this.each(function(index) {
var elem = this;
$.each(this.attributes, function(index, attr) {
if(attr.name.indexOf(s)===0){
matched.push(elem);
}
});
});
return $(matched);
};
})(jQuery);
Пример использования ...
HTML:
<div>
<div data-pet-dog></div>
<div data-pet-cat></div>
</div>
Javascript:
var foo = $("div").attrBegins("data-pet");
// results into... foo = [ <div data-pet-dog></div> , <div data-pet-cat></div> ]
ПРИМЕЧАНИЕ: Для того, чтобы избежать проблем с производительностью при выборе элементов Wich есть имя атрибута, который начинается с пользовательской строки использованием attrBegins, рекомендуется как можно более сузить исходный селектор, чтобы уменьшить набор элементов для итерации. attrBegins просто фильтрует сбор предварительно выбранных элементов, он не исследует дочерние элементы предоставленного набора элементов.
Что делать, если у вас есть несколько атрибутов, начинающихся с 'data-'? Какую ценность вы должны получить? –
jQuery имеет начало с селектором: http://api.jquery.com/attribute-starts-with-selector/ – Moob
В моем сценарии у меня есть только один ... поэтому, если бы я мог выбрать имя атрибута, начиная с «data-», что должно сделать – user3111581