Jquery simplemodal вызывая hover () для запуска несколько раз? - PullRequest
0 голосов
/ 04 января 2012

У меня есть простое событие hover (), которое прекрасно работает здесь: http://waterworks.reuniondesign.com/rates (наведите курсор на одно из чисел скольжения)

И это прекрасно работает на домашней странице, где я его скрыл: http://waterworks.reuniondesign.com/ (прокрутите вниз)

Но когда кто-то нажимает на «Щелкните здесь для макета марины» на главной странице, и div превращается в простое модальное поле, событие hover () запускается дважды, когда одна мышь наводит курсор на номер скольжения. Это почему? Я попытался сделать вещь, которая устанавливает переменную, чтобы увидеть, была ли она уже запущена, но она не работала. Есть идеи?

Вот код для выполнения события hover. jLoader - это функция ajax:

    $(document).ready(function(){
    var live = false;
    $('.slip').hover(function(){
        console.log('opening ' + live);
        if (live != true) {
            live = true;
            console.log('still opening ' + live);
            $(this).css('z-index','999');
            $(this).delay(500).append("<div id='slip_popup'><div id='slip_details'>loading slip details...</div></div>");
            jLoader('/blocks/slip_detail.php?slip_number=' + $(this).attr('id').replace('slip_',''),'replace','slip_details');
        }
    },function(){
        $(this).css('z-index','1');
        $('#slip_popup').remove();
        live = false
        console.log('closing ' + live);
    });
});

Наконец, если кто-нибудь знает, почему функция задержки не работает до функции append (), которую я хотел бы знать!

1 Ответ

0 голосов
/ 05 января 2012

Хорошо, я понял это, хотя некоторые люди могут уточнить.Происходит то, что скрипт simplemodal не уничтожает исходный div и его содержимое, он просто клонирует его.Это означает, что если div присутствует перед вызовом simplemodal, то все, что находится внутри этого div, теперь имеет несколько экземпляров где-то в DOM (?).

Функция jquery hover () должна как-то запутаться, потому что в DOM есть несколько экземпляров элемента с одинаковым идентификатором, поэтому он вызывается дважды, когда вы наводите курсор мыши на один из них, который затем запускаетсяостальная часть сценария наведения, добавление двух div и заполнение их вызовом ajax дважды.

Итак, в итоге я использовал вызов Ajax после simplemodal, чтобы заполнить содержимое модального поля.Таким образом, элементы добавляются в DOM после модального вызова и, следовательно, не дублируются.

...