2012-02-23 3 views
0

Вот моя проблема, я хочу проверить, что массив с JQuery установленным флажком. Я выполняю это каждый раз, когда флажок установлен или снят флажок. Таким образом, я использовал этот код, чтобы сделать то, что я хочу:Событие JQuery при изменении состояния флажка

$(document).ready(function(){ 
    $(":checkbox").change(function() { 
     CBChange(); 
    }); 
}); 

function CBChange() 
{ 
    $(":checkbox:checked").each(function() { 
     alert("checked"); 
    }); 
} 

Проблема в том, «я думаю», что это выполнить до того, как флажок, которые нажимали изменяет свое состояние. Так что, если, например, у меня есть четыре флажка, все они отмечены, и я снял флажок, предупреждающее сообщение будет появляться четыре раза, как если бы скрипт выполнялся до того, как он установил флажок для снятия флажка.

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

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

+0

Какой браузер вы используете? И как Аякс связан с вашим вопросом? – nnnnnn

ответ

-2

у вас есть неправильные селекторы попробовать

$(document).ready(function(){ 
    $("checkbox").change(function() { 
     CBChange(); 
    }); 
}); 

function CBChange() 
{ 
    $("checkbox:checked").each(function() { 
     alert("checked"); 
    }); 
} 
+0

не работает, я не думаю, что проблема исходит от селекторов. Предупреждающее сообщение появляется, как ожидалось, но похоже, что оно не учитывает изменения, которые я только что сделал. – maniak

+1

': checkbox' является допустимым селектором для выбора всех элементов флажка. http://api.jquery.com/checkbox-selector/ 'checkbox' однако недействителен, потому что не существует элемента с тэгом' checkbox'. Флажки - это элементы ввода. –

+0

извините за двойной пост, не очень используемый для этого форума, и не видел, чтобы комментарии были прямо под сообщением – maniak

0

Чтобы сделать массив со все отмеченными элементами

$(document).ready(function(){ 
    $(":checkbox").change(function(e) { 
     var items=$(":checkbox:checked"); 
     console.log(items); 
    }); 
}); 

Here является скрипкой.

1

Проблема «Я думаю», что это выполняется до того, как установленный флажок изменил его состояние. Так что, если, например, у меня есть четыре флажка, все они отмечены, и я снял флажок, предупреждение будет появляться четыре раза.

Что вы подразумеваете под «Я думаю»? Что случилось, когда вы попробовали? Событие изменения должно быть вызвано после состояние обновлено, и на практике это так, как это всегда сработало для меня. Таким образом, в вашем примере, если все четыре были отмечены, и вы снимите флажок, предупреждение должно появиться три раза.

Вот скрипка с кодом, который работает отлично: http://jsfiddle.net/nnnnnn/tMtwX/

Или вот еще один демонстрационный пример, показывающий тот же эффект без неудовольствия предупреждающих сообщений: http://jsfiddle.net/nnnnnn/WnHBx/

Или, если вы говорите alert(this.checked); внутри обработчик изменений вы Посмотрите текущее состояние конкретного флажка, который только что изменился ...