Применяя одно событие изменения jQuery к бесконечным потенциальным HTML-входам, используйте один и тот же идентификатор для них всех? - PullRequest
1 голос
/ 17 сентября 2009

Мне нужно, чтобы у пользователя была возможность щелкнуть «+», который добавляет новый раскрывающийся список к бесконечно расширяющейся коллекции раскрывающихся списков. Если я дам им одинаковый идентификатор, узнает ли событие изменения jQuery, какое из них вызвало событие изменения, основанное на $ (this), или мне нужно иметь новый идентификатор для каждого нового раскрывающегося списка, который создается во время жизни страницы?

... если есть другой элемент управления, который должен измениться в зависимости от того, какой выпадающий список был изменен, будет ли способ узнать, какой из них относится к нему, если все они имеют одинаковый идентификатор? (изобразите два раскрывающихся списка рядом, где изменение первого изменяет параметры второго, так что это похоже на бесконечно расширяющуюся совокупность ПАР раскрывающихся меню, которые связаны друг с другом)

Ответы [ 3 ]

5 голосов
/ 17 сентября 2009

Не давайте им те же ID, что это недопустимо и не будет работать. Дайте им то же самое class.

4 голосов
/ 17 сентября 2009

«Глобальная структура документа HTML» (спецификация HTML 4.01) в атрибуте id:

Этот атрибут присваивает имя элементу. Это имя должно быть уникальным в документе.

Итак: чтобы избежать неожиданного поведения, лучше сохраняйте свои идентификаторы уникальными.

Если вы используете $ (this) JQuery внутри события change , JQuery «узнает», какое из них вызвало:

$('#id').change(function(){
  $(this).doWhatYouWantCauseAPirateIsFree();
});
// or
$('.class').change(function(){
  $(this).doWhatYouWantCauseAPirateIsFree();
});

Документы по Обход помогут вам найти правильную функцию для поиска элементов, которые вы хотите изменить.

2 голосов
/ 17 сентября 2009

Вместо идентификатора используйте атрибут класса. Если вы определяете функцию для каждого элемента с определенным классом, функция может получить доступ к $ (this), чтобы определить, что делать.

$(".my-class").each(function(){
    var current_plus = $(this);
    //now do something with the variable
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...