Простые события щелчка перестали работать в IE7 - PullRequest
1 голос
/ 28 мая 2010

Вот мой код:

$('#alertInfo').modal({
    close :false,
    overlayId :'confirmModalOverlay',
    containerId :'confirmModalContainer',
    onShow : function(dialog) {
        dialog.data.find('.message').append(message);

        dialog.data.find('.yes').click(function(){
            if ($.isFunction(callback)) callback.apply();
            $.modal.close();
        });

        dialog.data.find('.close').click(function(){
            $.modal.close();
        });  
    }
});

По сути, это диалоговое окно, которое я вызываю для отображения предупреждающего сообщения с кнопкой «X» (с классом «закрыть») и кнопкой «ОК» (с классом «да»).

Проблема возникает в IE7. Когда я вызываю это диалоговое окно и каждый раз использую кнопку «X», чтобы закрыть его, моя кнопка «X» больше не работает в третий раз, когда я ее вызываю (ДА В ТРЕТЬЕ ВРЕМЯ!). Однако, если я использую кнопку «ОК», чтобы закрыть диалоговое окно, оно работает нормально, независимо от того, сколько раз я его вызываю.

Я подумал, что нашел обходной путь, отсоединив и связав событие click для класса '.close' (вместо использования метода click jquery), как показано ниже:

dialog.data.find('.close').unbind('click');
dialog.data.find('.close').bind('click',function(){$.modal.close();});

и это сработало !!! к сожалению, однако, проблема теперь происходит в моей кнопке «ОК». Итак, я сделал то же самое связывание и связывание события click класса '.yes', как показано ниже:

dialog.data.find('.yes').unbind('click');
dialog.data.find('.yes').bind('click',
    function() {
        if ($.isFunction(callback)) callback.apply();
        $.modal.close();
});

НО НЕТ, ЭТО НЕ РАБОТАЕТ .. пожалуйста, помогите мне .. @ericmmartin, я надеюсь, ты сейчас в сети .. хаху ..

НОВОЕ НАБЛЮДЕНИЕ: Если я помещаю привязку / привязку класса «.close» перед классом «.yes», проблема возникает в моей кнопке «X» (с классом «.close»), как показано ниже: *

$('#alertInfo').modal({
    close :false,
    overlayId :'confirmModalOverlay',
    containerId :'confirmModalContainer',
    onShow : function(dialog) {
        dialog.data.find('.message').append(message);

        dialog.data.find('.close').unbind('click');
        dialog.data.find('.close').bind('click',
            function(){
                $.modal.close();
        });

        dialog.data.find('.yes').unbind('click');
        dialog.data.find('.yes').bind('click',
            function(){
                if ($.isFunction(callback)) callback.apply();
                $.modal.close();
        }); 
    }
});

ПОЧЕМУ ОЙ ПОЧЕМУ?!

1 Ответ

1 голос
/ 28 мая 2010

Для начала, для «X» используйте класс «simplemodal-close» вместо просто «close». SimpleModal будет обрабатывать привязку функции close к событию click этого элемента.

Во-вторых, вам не нужно делать unbind / bind. Следующее должно работать:

$('.yes', dialog.data[0]).click(function () {
    if ($.isFunction(callback)) {
        callback.apply();
    }
    $.modal.close();
});

Если нет, возможно, в вашем коде происходит что-то еще ...

...