Как отложить .live () до обновления пользовательского интерфейса? - PullRequest
0 голосов
/ 23 сентября 2011

Я использую jQuery и jQuery UI, и я пытаюсь прочитать состояние флажка, добавив свойство "aria-press", которое кнопка UI jQuery переключает между false и true.Однако, кажется, код читает aria -ressed до того, как пользовательский интерфейс jQuery обновил aria-press.Так что я ненадежные ценности.Могу ли я запланировать его выполнение после обновления пользовательского интерфейса или я могу заставить его ждать?

Живой пример здесь!

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

Не можете ли вы добавить прослушиватель к фактическому флажку за меткой или промежутком?

$("#days_list li div div div input[type='checkbox']").change(function(){
     alert("Someone just clicked checkbox with id"+$(this).attr("id"));
});

Это должно работать, так как после нажатия на метку вы меняете значение в флажке.


Хорошо, я составил для вас живой пример , который демонстрирует общее представление о том, как он работает и как вы получаете статус флажка.

$("#checkbox_container input").change(function(){
    if($(this).is(":checked")) alert("Checked!");
    else alert("Unchecked!");
});

В вашем случае, поскольку JQuery динамически добавляет этот флажок, вы должны использовать прямое событие, но в основном это одно и то же

$("#checkbox_container input").live("changed"....

Вот пример с некоторымидополнительные сценарии и проверки, в основном для демонстрационных целей.

0 голосов
/ 23 сентября 2011

Вы можете использовать обратный вызов для выполнения alert($(this).attr('aria-pressed')); после завершения переключения.

$('.slidebutton').toggle(1000, function(){

    alert($(this).attr('aria-pressed'));
});

Я не слишком уверен, используете ли вы .toggle() или нет, но вам потребуется использовать обратный вызов в любом случае, чтобы обеспечить последовательное выполнение.

...