jQuery 1.4.4 и IE6: .live ('change') не активируется до появления размытия - PullRequest
4 голосов
/ 14 января 2011

Вот код, использующий jQuery 1.4.4:

<input type="checkbox" value="on" offval="off" id="c5f1_Associated" name="Associated" class="editable">    
<script type="text/javascript">
$('input:checkbox').live('change', function() {
    alert('Changed!');
    // some other code
});
</script>

(флажки генерируются jqGrid, поэтому они немного беспорядочные).

В Chrome функциясрабатывает сразу после нажатия на флажок.

В IE6 это срабатывает только после нажатия флажка и ТОГО, когда щелкает что-то еще на странице (т.е. размывает).

Согласно Замечания к выпуску jQuery 1.4 :

change и submit нормализованные события

События изменения и отправки надежно работают во всех браузерах как для обычных, так и для живых событий.Мы переопределяем обычное изменение и отправляем события в Internet Explorer и заменяем их событиями, которые работают одинаково с другими браузерами.

Это поведение не очень мне подходит!

Из того, что я мог найти, были ошибки, связанные с использованием .live ("change") в IE в более ранних версиях 1.4, но они, как утверждается, были исправлены в 1.4.2.

Я что-то не так делаю, илиэто как это должно работать в IE6?Буду ли я вынужден сделать что-то вроде this ?

1 Ответ

1 голос
/ 15 января 2011

Единственная потенциальная проблема, которую я вижу с «щелчком», заключается в том, что если пользователь переходит к флажку с помощью клавиши табуляции, а затем использует пробел для его выбора / отмены, событие не будет запущено. Поэтому вам нужно добавить дополнительный бит кода для события keydown или keyup на флажок:

$('input:checkbox').live('click', function(){
    checkBoxChanged();
}).keyup(function(e){
    if(e.which == 32){ //if the key pressed was the space bar
        checkBoxChanged();
    }
});

function checkBoxChanged(){
    alert('changed!');
    //other code
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...