2010-05-28 6 views
1

Voici mon code:événements de clic SimpleModal ont cessé de travailler dans 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(); 
     }); 
    } 
}); 

Fondamentalement, ceci est une boîte de dialogue que j'appelle pour montrer un message d'avertissement qui a un bouton « X » (avec classe « proche ») et un bouton "OK" (avec la classe "oui").

Le problème se produit dans IE7. Lorsque j'appelle cette boîte de dialogue et que j'utilise mon bouton «X» pour la fermer à chaque fois, mon bouton «X» ne fonctionne plus la troisième fois que je l'appelle (OUI À LA TROISIÈME FOIS!). Cependant, si j'utilise mon bouton "OK" pour fermer la boîte de dialogue, cela fonctionne bien, peu importe le nombre de fois que je l'appelle.

Je pensais que je trouve une solution de contournement par déliaison et lier mon événement de clic de la classe « .close » (au lieu d'utiliser la méthode de clic jquery), comme ci-dessous:

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

et ça a marché !!! Malheureusement, le problème se produit maintenant dans mon bouton "OK". donc, je l'ai fait la même déliaison et lier l'événement clic de la classe » .Oui de, comme ci-dessous:

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

MAIS Nope, IL NE FONCTIONNE PAS .. s'il vous plaît aidez-moi .. @ericmmartin, je l'espère vous êtes en ligne maintenant .. huhu ..

NOUVELLE OBSERVATION: Si je place la liaison/liaison de la classe '.close' avant la classe '.yes', le problème se produit dans mon "X" (avec la classe '. fermer ') bouton .. comme ci-dessous:

$('#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(); 
     }); 
    } 
}); 

POURQUOI POURQUOI?

Répondre

1

Pour les débutants, pour le "X", utilisez une classe de "simplemodal-close" au lieu de simplement "close". SimpleModal gère la liaison de la fonction close à l'événement click de cet élément. Deuxièmement, vous ne devriez pas avoir besoin de faire le unbind/bind. Ce qui suit devrait fonctionner:

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

Sinon, peut-être il y a quelque chose d'autre se passe dans votre code ...

+0

vous remercie pour la réponse .. Je l'ai déjà essayé d'utiliser la classe « SimpleModal-close » avant mais ne réussit pas à le faire fonctionner .. il doit y avoir vraiment quelque chose de mal avec mes codes, mais n'a pas encore trouvé le problème .. de toute façon, je vais essayer d'implémenter celui que vous venez de fournir maintenant .. merci beaucoup! – prettynerd

Questions connexes