jQuery非选择器导致无限循环
以下代码导致我的浏览器崩溃。对于Firefox,我可以选择是否停止jQuery,因为它的运行时间比应该的长jQuery非选择器导致无限循环,jquery,selector,Jquery,Selector,以下代码导致我的浏览器崩溃。对于Firefox,我可以选择是否停止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<
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=“div离开”>
您将要前往:
$(文档).ready(函数(){
$(“a:not(#divLeavingYes,#divLeavingNo)”。单击(函数(){
var url=$(this.attr(“href”);
var测试如果本地=url.indexOf(“mycompany.com”);
如果(测试如果本地==-1){
$(“#spanLeavingURL”).text(url);
$(“#divLeavingYes”).attr(“href”,url);
$(“#divLeavingNo”)。单击(function(){$(this.dialog('destroy');});
$(“#div”).dialog({modal:true});
返回false;
}
});
});
但是,如果我删除not选择器,它不会使我的浏览器崩溃
<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>
您将要前往:
$(文档).ready(函数(){
$(“a”)。单击(函数(){
var url=$(this.attr(“href”);
var测试如果本地=url.indexOf(“mycompany.com”);
如果(测试如果本地==-1){
$(“#spanLeavingURL”).text(url);
$(“#divLeavingYes”).attr(“href”,url);
$(“#divLeavingNo”)。单击(function(){$(this.dialog('destroy');});
$(“#div”).dialog({modal:true});
返回false;
}
});
});
如何更改此查询,使其选择除#divLeavingYes和#divLeavingNo之外的所有查询?尝试此操作,我包括“event.stopPropagation()”:
我不确定您的HTML是如何构造的,但也许您可以使用jQuery的slice()过滤器来完成这项工作
我不知道jQuery的实现,但是:
a:not(#divLeavingYes, #divLeavingNo)
不是有效的CSS3选择器。:not选择器只能取一个值。尝试:
我不知道你的浏览器是什么,这个例子我在IE、Firefox、Chrome和Safary中都做得很好。在关闭之前,您可以更具体地说明哪个浏览器是您的浏览器,或者询问哪些浏览器尝试此示例。你必须记住,这些脚本并不完美,我有完整的HTML来查看错误是否存在于代码的其他部分。上面的代码不会让我崩溃Firefox。您还可以包含其他代码吗?
a:not(#divLeavingYes, #divLeavingNo)
a:not(#divLeavingYes):not(#divLeavingNo)