jQuery die () не работает - PullRequest
       14

jQuery die () не работает

0 голосов
/ 07 ноября 2011

Поскольку я создаю код HTA, я застрял в IE: (

Нам нужно было перехватить событие изменения в элементе <select>, но угадайте, что, IE не поддерживает это событие.

Итак, я создал способ имитировать его. С <input type="text">, когда он нажимается, показывается <select> чуть ниже. Эта часть работает нормально. Проблема в том, что я хочу скрыть select когда пользователь щелкает за пределами select.

Я пытался поймать click на body, он работает нормально в первый раз, но во второй раз select скрывается.

Вот упрощенная версия кода:

$('.product').live('click',function(){
    // Show the <select id="select"> code goes here

    // this is the event to close the select
    $('body').die().live('click', function(){ $('#select').fadeOut(250); return;});

    // get the click on the select element
    $('#select').die().live('click',function(){
       // kill the close the select
       // THIS IS THE .die() THAT DOES NOT WORK
       $('body').die();

});

Вопрос Что-то не так с этим кодом? ИЛИ Есть ли лучший способ сделать это? Запомнитьзастрял с IE.

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

Internet Explorer 7 и выше (и, вероятно, 6, поскольку IE7 в основном IE6 с помадой, но я не могу это легко проверить) do поддерживает событие изменения. Здесь - это jsfiddle с очень простой демонстрацией.

Это определенно правда, что IE делает странные вещи с событиями. Например, «изменение» не будет пузыриться (по крайней мере от <select> и, возможно, других вещей), но jQuery исправит это для вас. Также есть классическая проблема с флажками и переключателями, которые не запускают «изменения», пока не потеряют фокус (что делает его в основном бесполезным). Для тех, кто считает, что «щелчок» работает нормально.

1 голос
/ 07 ноября 2011

Для правильной работы .die () селектор, используемый с ним, должен точно соответствовать селектору, изначально используемому с .live ().

...