в каком событии я должен запустить изменение?

В html-форме у меня есть флажок с меткой. Когда вы щелкаете по флажку или его метке, он переключает флажок. Он завернут в <div>.

Я использую jquery, чтобы скрыть другой элемент формы, если флажок установлен. Первоначально я использовал функцию .click() обертки div. Но я заметил, что вы можете щелкнуть между флажком и меткой (которая все еще находится внутри div) и скрыть другую, даже если флажок не установлен. (Кроме того, по какой-то причине нажатие на метку приводило к тому, что элемент скрывался, а затем снова появлялся, но я не думаю, что мне нужно открывать эту банку с червями).

Я думал, что вместо click() div я должен смотреть как на флажок, так и на div отдельно. Затем я подумал, что могу просто поискать что-то вроде события onChange для самого флажка, на которое должно повлиять нажатие на метку. Тогда я подумал, что люди наверняка уже решали эту проблему раньше и мне не стоит пытаться заново изобретать велосипед.

Каков простой способ синхронизировать значение флажка и состояние скрытия/отображения моего элемента, когда два разных элемента могут изменить статус флажка?


person user151841    schedule 09.08.2011    source источник
comment
Да, событие change хорошее.   -  person Felix Kling    schedule 09.08.2011


Ответы (3)


Прикрепите событие onclick к флажку (событие onchange тоже работает). Независимо от того, щелкнете ли вы по самому флажку или его метке, обработчик события сработает. Просто убедитесь, что атрибут for метки содержит идентификатор флажка.

http://jsfiddle.net/FishBasketGordo/GJbce/

person FishBasketGordo    schedule 09.08.2011
comment
Хорошее решение. Может потребоваться небольшая настройка, если флажок установлен по умолчанию. - person Detect; 09.08.2011
comment
Если он отмечен по умолчанию, установите блокировку отображения div по умолчанию. Вы можете сделать это декларативно или программно. - person FishBasketGordo; 09.08.2011

Событие onChange для флажка, вероятно, хорошо удовлетворит ваши потребности в этом случае.

person Will Martin    schedule 09.08.2011

Попробуйте использовать функцию .change() для ввода флажка.

person Matt Bradley    schedule 09.08.2011