#jquery #html
#jquery #HTML
Вопрос:
У меня есть следующая функция:
$('#topic').change(function()
Он работает с идентификатором, который называется #topic . Я хотел бы выполнить это действие с идентификатором, вызываемым
#topic_1 or #topic_2 or #topic_3 etc.
Есть ли простой способ сделать это с помощью jQuery, используя подстановочные знаки? Также, как я могу извлечь число 1,2 или 3 и узнать значение другого элемента, помеченного key_1, key_2 или key_3. Я надеюсь, что это имеет смысл для вас.
Извините, это простой вопрос, но я совершенно новичок в jQuery
Комментарии:
1. Прошу прощения. Я немного отредактировал вопрос, и вы все так быстро ответили. Мне нравится идея атрибута, начинающегося с, но как мне затем найти _1 или _2 и добавить это, чтобы создать новый идентификатор других элементов?
2. я думаю, будет лучше, если вы опубликуете новый вопрос для этого … потому что каждый дал ответ в соответствии с первоначальными требованиями .. теперь каждый должен изменить там ответ..
Ответ №1:
Вы можете использовать, id
если хотите (больше вариантов ниже), с помощью селектора «атрибут начинается с»:
$('[id^="topic"]').change(function() { ... });
Этот селектор будет соответствовать любому id
значению, которое начинается с «topic». Обязательно заключите аргумент («topic») в кавычки, это (сейчас) обязательно.
Если у вас есть короткий список из них, вы можете просто перечислить их напрямую:
$('#topic1, #topic2, #topic3').change(function() { ... });
Или вы могли бы выбрать какую-то другую характеристику, которая у них есть общего. Популярные варианты:
-
Их
class
, используя селектор класса:$('.theClass').change(...);
-
Их расположение в DOM. Например, если вы хотите просмотреть
change
событие во всех полях формы, вы можете начать с формы и использовать селектор-потомок, возможно, с определителем типа:input
(который соответствует элементамinput
,select
иtextarea
), например, так:$('#formId :input').change(...);
-
Какой-либо другой атрибут, который они совместно используют, используя селектор «атрибут равен», селектор «атрибут содержит» и т.д.
Как вы можете видеть, вам есть из чего выбирать, гораздо больше, чем просто идентификаторы и классы. Обратите внимание, что в большинстве браузеров селекторы классов будут самыми быстрыми, но это действительно имеет значение только на очень сложных страницах или когда вы много просматриваете селекторы. Оптимизируйте, если / когда вы видите проблему, как всегда.
Ответ №2:
Почему бы вместо этого не использовать селектор класса? Присваивает всем элементам класс CSS под названием «topic» и модифицирует ваш код следующим образом:
$('.topic').change(function() { });
Ответ №3:
Вот так
$('input[id^="topic"]').val('news here!');
$(input[id^="topic"]).change(function(){
//Do something
});
Ответ №4:
используйте атрибут class..
$('.topic').change(function() { });
Ответ №5:
Предпочтительным способом сделать это является использование селектора класса. Однако для произвольных имен вы также можете реализовать нечто подобное этому:
для (i=0;i<бла-бла-бла;i ){
$("#topic_" i).изменить(функция() {}); }