флажок проверка подтверждения - PullRequest
0 голосов
/ 27 сентября 2011

HTML:

<div>
    <input>
    <label>
</div>

JS:

$('div input').live('click',function(){
    alert($(this).is(':checked'));
});
$('div').live('click,'function(e){
    if(!$(e.target).is('input'))
        $(this).find('input').click();
});

Всякий раз, когда я нажимаю на вход, он точно отображает, во что превращается вход (если я включаю вход, он предупреждает об истинности)
Но всякий раз, когда я нажимаю на элемент div / label, он делает противоположное (когда вход включается, он выдает ложное сообщение)

Есть ли способ проверить, поворачивается ли входвключено и выключено в обоих случаях вместо 1?

[Я предполагаю, что причина этого заключается в том, что браузер запускает один из них, что происходит до jquery (хотя я предполагал, что jquery должен произойти)сначала, но неважно), а в другом случае jquery выполняется перед триггером «флажка», но, похоже, не может понять, как задержать триггер до окончания сценария или заставить его запускаться до сценария.]

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 27 сентября 2011

Вы можете контролировать change() на самом флажке, затем при нажатии кнопки DIV вы можете изменить значение непосредственно в этом флажке и затем вызвать change() вместо click().

$('input[type="checkbox"]').live('change',function(){
    alert($(this).is(':checked'));
});

$('div').live('click',function(e){
    if(!$(e.target).is('input')) {
        var $input = $(this).find('input');
        $input.prop("checked", !$input.is(':checked')).change();
    }
});

Также,если ваша цель - избежать всего раздражения <label for="" />, проверьте это.

<label><input type="checkbox" value="awesome" /> Check it</label>
1 голос
/ 27 сентября 2011

попробуйте это:

$('div input').live('click',function(){
    alert($(this).is(':checked'));
});
$('div').live('click,'function(e){
    if(!$(e.target).is('input'))
        $(this).find('input').triggerHandler("click");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...