Вопрос по jquery-selectors, jquery, javascript, css-selectors, custom-data-attribute – jQuery - выбрать все элементы с именем атрибута (не значением), начинающимся с…?

3

Скажем, я ищу все элементы с атрибутом «data-language», значение которого начинается с «java» (будет соответствовать как «java», так и «javascript»). Я знаю, как это сделать:

$('[data-language^="java"]')

Но мой вопрос: как мне получить все элементы, которые имеют атрибут (не значение атрибута, а собственно имя самого атрибута) с чего начать? Например:

все элементы, которые имеют имя атрибута, начинающееся с «data-s», иливсе элементы, которые вообще имеют атрибуты данных (атрибуты начинаются с «data-»).
Я понял, что эти смелые слова означают что-то важное :) tymeJV
Да, точно! Извините, я вижу, как это может быть неправильно истолковано. jbyrd
хаха - хорошо, я обновил вопрос - надеюсь, теперь он немного понятнее. jbyrd
«Я знаю, как получить все элементы, которые имеют значение атрибута, начиная с чего-то:$('[data-size^="value"]')" Это не будет делать это. j08691
Я думаю, что мы все неправильно прочитали, вы хотите найти все элементы, которые имеют атрибут, начинающийся сdata-Итак, вы хотите, чтобы все элементы, содержащие пользовательский атрибут данных, да? tymeJV

Ваш Ответ

2   ответа
0

http://api.jquery.com/data/

$("div").data() // returns all data attributes to this div
$('div').filter(function () { return !$.isEmptyObject($(this).data()) }) должен соответствовать вашим потребностям, сопоставляя любые DIV с некоторым атрибутом данных A. Wolff
да, после ответа и перечитывания я понимаю, что это не то, что вы ищете, я считаю, @dystroy имеет право для вас j0hnstew
Но это атрибуты данных для конкретного элемента. Я хочу выбрать все элементы, которые имеют атрибут данных. jbyrd
8

вы можете использоватьattributes коллекция:

 $(someselector).filter(function(){
      var attrs = this.attributes;
      for (var i=0; i<attrs.length; i++) {
          if (attrs[i].name.indexOf("someStartOfName")==0) return true;
      }         
      return false;
 });

Похожие вопросы