2009-09-11 5 views
0

Le code suivant provoque le blocage de mes navigateurs. Pour Firefox, on m'a donné une option si je veux arrêter jQuery parce qu'il fonctionnait plus longtemps que prévu. Toutefois, si je supprime le sélecteur, il ne plante pas mon navigateur.jQuery Non le sélecteur provoque une boucle infinie

<div id="divLeaving"> 
    You are about to leave to: <span id="spanLeavingURL"></span> 
    <a id="divLeavingYes" href="#">Yes</a><a id="divLeavingNo" href="#">No</a> 
</div> 
<a href="http://www.google.com">google</a> 

<script type="text/javascript" language="javascript"> 

    $(document).ready(function() { 
     $("a").click(function() { 
      var url = $(this).attr("href"); 
      var test_if_local = url.indexOf("mycompany.com"); 
      if (test_if_local == -1) { 
       $("#spanLeavingURL").text(url); 
       $("#divLeavingYes").attr("href", url); 
       $("#divLeavingNo").click(function() { $(this).dialog('destroy'); }); 
       $("#divLeaving").dialog({ modal: true }); 
       return false; 
      } 
     }); 
    }); 
</script> 

Comment puis-je changer Thes requête afin qu'il sélectionne tous, sauf pour #divLeavingYes et #divLeavingNo?

+0

Le code ci-dessus ne plante pas Firefox pour moi. Y at-il plus de code que vous pouvez inclure? –

Répondre

0

essayer avec cela, j'Include « event.stopPropagation(); »:

$(document).ready(function() { 
    $("a:not(#divLeavingYes, #divLeavingNo)").click(function(event) { 
    event.stopPropagation(); 
     var url = $(this).attr("href"); 
     var test_if_local = url.indexOf("mycompany.com"); 
     if (test_if_local == -1) { 
      $("#spanLeavingURL").text(url); 
      $("#divLeavingYes").attr("href", url); 
      $("#divLeavingNo").click(function() { $(this).dialog('destroy'); }); 
      $("#divLeaving").dialog({ modal: true }); 
      return false; 
     } 
    }); 
}); 
+0

Je l'ai essayé. Votre solution ne fonctionne pas. – burnt1ce

+0

Je ne sais pas ce que votre navigateur, cet exemple, j'ai travaillé parfaitement dans IE, Firefox, Chrome et Safary. Avant de vous coucher, vous pouvez être plus précis sur votre navigateur ou demander aux navigateurs d'essayer cet exemple. Et vous devez garder à l'esprit que ces scripts ne seront pas parfaits, et j'ai le code HTML complet pour voir si l'erreur est dans une autre partie de votre code. –

1

Je ne sais pas sur la mise en œuvre de jQuery, mais:

a:not(#divLeavingYes, #divLeavingNo) 

n'est pas un sélecteur CSS3 valide. Le: not selector ne peut prendre qu'un simple selector. Essayez:

a:not(#divLeavingYes):not(#divLeavingNo)