Intereting Posts
Линейные разрывы между divs создают пространство. Как устранить его из HTML? Апплет-код и файлы classов Сделайте div заполнить пробел Вертикально выстраивать линейные элементы – выравнивать изображение на той же строке, что и текст Сопоставление вычисленных стилей CSS с указанными? как остановить элемент с первым событием onclick, которое будет запущено при первом нажатии клавиши ввода Отсутствие непрозрачности на div внутри div с непрозрачностью Что такое «сгенерированный» атрибут, который наблюдается в некотором HTML-теге? Ошибка Chrome? Контент не воспроизводит несколько столбцов должным образом Атрибуты HTML для редактора () в ASP.NET MVC Сдвиньте анимацию с дисплея: none для отображения: block? HTMLAgilityPack SelectNodes для выбора всех элементов Как установить innerHTML какого-либо элемента в окне, открытом объектом windows JavaScript? Как вы можете настроить номера в упорядоченном списке? HTML Tidy, не перемещайте эти комментарии!

jQuery .change () только срабатывает при первом изменении

Вот мой код:

$.each (t.config.industry, function (i, v) { $(v).change(function () { console.log("Industry change!"); }); }); 

t.config.industry – это массив ids. t.config.industry: ["#W2549_Sl", "#W2601_Sl", "#W2654_Sl"] меня есть несколько блоков на странице, и я отслеживаю их все. Каждый раз, когда кто-либо из них меняет, я хочу что-то сжечь.

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

Кто-нибудь видел это раньше?

ПРИМЕЧАНИЕ. Я вообще не могу изменить HTML-разметку.

Я был свидетелем такого поведения, когда идентификаторы нескольких элементов выбора не были уникальными. Чтобы решить проблему в моем случае, я просто удалил идентификаторы, определил class и модифицировал селектор jQuery для использования указанного classа. Например:

   

Честно говоря, я считаю поведение ошибкой в ​​jQuery. Почему он должен успешно работать один раз и терпеть неудачу после этого?

Если бы вы могли добавить общий class к каждому из элементов выбора, которые вы хотите контролировать, это значительно упростит ваш код. Попробуйте это (jQuery 1.7 требуется для метода on ):

 $(document).on('change','select.monitorme', function() { console.log($(this).attr('id')+' changed!'); }); $.each (t.config.industry, function (i, v) { $(v).change(function () { $(this).addClass('monitorme'); // or just add the class to your markup }); }); 

Попробуйте переписать его таким способом HTML

   

JAVASCRIPT

  $('#main_industry').change(function() { // your stuff here console.log ($(this).val()); } 

Вам нужно добавить # перед v (ваш id ) для этого селектора для работы

 $.each(t.config.industry, function (i, v) { $("#" + v).change(function () { console.log("Industry change!"); }); }); 

для asp.net он корректно работает в моем проекте. отметьте, если его работа для вас

          

функция

  selectChange() { if ($("[id*=txtvisitname]").val() == "Unscheduled VISIT") { $(".other").show(); } else { $(".other").hide(); } } .  selectChange() { if ($("[id*=txtvisitname]").val() == "Unscheduled VISIT") { $(".other").show(); } else { $(".other").hide(); } } 

Вы настраиваете слушателя на каждый вариант, который кажется. Поместите это только на свой выбор!