2010-05-28 1 views
1

Вот мой код:SimpleModal клики перестали работать в IE7

$('#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» больше не работает в третий раз, когда я ее вызываю (ДА В ТРЕТЬЕ ВРЕМЯ!). Однако, если я использую свою кнопку «ОК», чтобы закрыть диалоговое окно, он отлично работает независимо от того, сколько раз я его называю.

Я думал, что я нашел обходной путь развязывающего и связывающего мой клик случае «.close» класса (вместо того, чтобы использовать метод щелчка JQuery), как показано ниже:

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

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

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

но нет, он не работает .. пожалуйста, помогите мне .. @ericmmartin, я надеюсь, вы сейчас на сайте .. huhu ..

NEW НАБЛЮДЕНИЕ: Если я помещаю развязывание/привязку класса '.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

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

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

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

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

+0

спасибо за ответ .. я уже пробовал использовать «SimpleModal-закрыть» класс раньше, но не удалось заставить его работать. Должно быть, что-то не так с моими кодами, но пока не нашли проблему. Во всяком случае, я постараюсь реализовать тот, который вы только что предоставили. Спасибо за кучу! – prettynerd

 Смежные вопросы

  • Нет связанных вопросов^_^