#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», которому это не будет соответствовать.