Я столкнулся со странным поведением в jQuery 1.4 с событием click. Идея состоит в том, чтобы щелкнуть по раскрывающемуся списку (change()
), который затем дважды инвертирует коллекцию флажков, используя их функцию click()
.
Если мне нужно сделать это, то потому, что флажки click
на обновляют другие поля, поэтому я подумал, что вместо инвертирования атрибута флажков checked
давайте просто дважды вызовем щелчок на всех флажках.
Хотя все флажки правильно инвертированы дважды, .length
, который я использую для функции click
, теряет правильный счет во время операции и каждый раз возвращает 1 больше, чем следовало бы.
Чтобы прояснить это, вот идея кода:
//The 'click' function
$('input:checkbox').click(function(){
$(this).parent().find("input:checkbox:checked").length;//<- this one's not returning the right count
//some code updating other fields thanks to the 'length' of the checkboxes
});
//The dropdown function
$('select.dropdown').change(function(){
$(this).parent().find("input:checkbox").click();//Invert the first time
$(this).parent().find("input:checkbox").click();//Invert a second time
});
Когда я вручную проверяю и снимаю флажки с полей, все работает отлично, только когда выпадающий список вызывает его, счетчик длины неверен.
Вот 2 сценария, которые еще глубже объясняют проблему, с которой я сталкиваюсь:
- Если я выберу что-то из выпадающего списка (длина не указана), а затем сниму флажок и перепроверяю флажок, счет будет правильным.
- Если я добавлю код ошибки в конце функции
click()
, он будет работать нормально, за исключением сообщения об ошибке в консоли отладчика javascript. Кстати, я не могу сохранить это решение, потому что в этом случае происходит сбой другой функции.
Ура,
Николя.