Как я могу получить имя класса, содержащее ‘map’ в jquery?

#jquery

#jquery

Вопрос:

Кто-нибудь знает, как я могу получить имя класса, содержащее слово ‘map’ с помощью jquery? Я использую следующий код, чтобы получить имя класса с помощью map (например, class=»mapTest»), но это не сработает, если класс содержит 2 имени (например, class =»abctest map test»).). Кто-нибудь знает, как я могу это исправить?

      $(":input[class^=map]").each(function(index, element) {
        map_array.push(this.className);
    });
  

Ответ №1:

Вы пробовали использовать селектор contains? Он проверяет имя класса, чтобы увидеть, содержит ли оно указанную подстроку. Например:

 $('input[class*="map"]');
  

Посмотрим, сработает ли это.

Подробнее здесь:http://api.jquery.com/attribute-contains-selector /

Ответ №2:

Вы были близки, вы хотите *= , не ^= :

 $(':input[class*="map"]').each(function(index, element) {
    map_array.push(this.className);
});
  

Это селектор «атрибут содержит» (документы jQuery, спецификация CSS).


О кавычках: они необязательны, если значение, которое вы ищете, соответствует определению идентификатора CSS (например, ваше map значение соответствует). Они необходимы, если вы сопоставляете что-то, что не соответствует этому определению (например, что-либо с пробелом в нем или начинающееся с неэкранированной цифры).

Поскольку кавычки никогда не являются неправильными, лучше всегда использовать их, но вам не обязательно это делать, если вы знаете, что ищете простую вещь вроде map .

Ответ №3:

Попробуйте вместо этого использовать ~= . Он проверяет, содержит ли он текст в случаях нескольких классов.

 $(":input[class~=map]").each(function(index, element) {
        map_array.push(this.className);
    });
  

Редактировать: Извините, я должен уточнить. Это для сопоставления при наличии нескольких классов. (Если бы у вас был class=»map blahmap»), это соответствовало бы только map, где-as *= соответствовало бы обоим — это более полезно, когда вы пытаетесь проверить, имеет ли что-то определенное имя класса среди нескольких классов)

Комментарии:

1. Это не будет соответствовать mapTest , только map . ~= соответствует полным словам.

2. ~= проверяет наличие «map» не как подстроки, а как элемента в списке, разделенном пробелами: w3.org/TR/css3-selectors/#attribute-representation Это удобно при работе с классами CSS в целом, но в OP приведен пример класса «mapTest», которому это не будет соответствовать.