2009-09-11 148 views
0

以下代碼會導致瀏覽器崩潰。對於Firefox,我已經給出了一個選擇,不管我是否想停止jQuery,因爲它的運行時間比它應該的長。jQuery不選擇導致無限循環

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:not(#divLeavingYes, #divLeavingNo)").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> 

但是,如果我刪除不選擇它不會崩潰我的瀏覽器。

<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> 

如何更改查詢,以便選擇除#divLeavingYes和#divLeavingNo之外的所有項目?

+0

上面的代碼不會使Firefox崩潰。是否還有更多代碼可以包含? –

回答

0

這種嘗試,我有「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

試過了。您的解決方案不起作用。 – burnt1ce

+0

我不知道你的瀏覽器是什麼,這個例子我在IE,Firefox,Chrome和Safary上完美工作。 在此之前,您可以更具體地瞭解您的瀏覽器,或者詢問哪些瀏覽器嘗試此示例。你必須記住,這些腳本不是完美的,我有完整的HTML,看看錯誤是否在你的代碼的其他部分。 –

1

我不知道jQuery的實現,但是:

a:not(#divLeavingYes, #divLeavingNo) 

不是有效的CSS3選擇器。該:不選擇器只能採取simple selector。請嘗試:

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