以下在Firefox中有效,但在IE7和8中有效:
$("#my-first-div, #my-second-div").hide();
所以必须这样做:
$("#my-first-div").hide();
$("#my-second-div").hide();
这是正常的吗?
我的实际的代码是这样的:
$("#charges-gsm,#charges-gsm-faq,#charges-gsm-prices").html(html);
我的错误是这样的
( IE8): Message: 'nodeName' is null or not an object
Line: 19 Char: 150 Code: 0
URI: http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js
发布于 2018-06-05 10:10:27
指定的位置状态:
Message: 'nodeName' is null or not an object
Line: 19 Char: 150 Code: 0
URI: http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js
这个特定的jQuery是:
nodeName:function(elem,name){
return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();
}
这本身就是为调用而创建的封闭jQuery.extend()
。所以如果你做了一个“查看源代码”或者它的IE代码,那么是否还有其他的字符串“nodeName”可能会干扰jQuery的发生。
还可以通过创建一个xx.html文件并在IE7 / 8中打开它来测试以下内容吗?在Ubuntu中的Firefox 3下运行良好,在选择器中的逗号之后有或没有空格。
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("a").click(function(event){
$("#charges-gsm,#charges-gsm-faq,#charges-gsm-prices").html("xx")
event.preventDefault();
});
});
</script>
</head>
<body>
<a href="http://jquery.com/">jQuery</a>
<hr>
<div id="charges-gsm">CHARGES-GSM</div>
<div id="charges-gsm-faq">CHARGES-GSM-FAQ</div>
<div id="charges-gsm-prices">CHARGES-GSM-PRICES</div>
</body>
</html>
发布于 2018-06-05 11:17:37
你的一个元素嵌套在另一个元素内吗?
即:
<div id="foo">
<div id="bar">
<div id="baz">
</div>
</div>
如果是这样的话,你可能遇到了一个指针问题,在你试图找出它的div之前,IE可能已经释放了它。行为
$("#foo,#bar,#baz").html("xx");
在这个场景中是:
但是,如果在第2阶段和第3阶段,#bar和#baz不再存在(如果xx碰巧包含#bar和#baz的副本并不重要,它们可能会是不同的对象,并且要替换的初始对象已被捕获,只是不再位于DOM中: /)
可以通过在try / catch中封装这个过程来压制这个错误
try {
$("#foo,#bar,#baz").html("xx");
}
catch( e )
{
/* DO NOTHING D: */
}
但是尽量在获得某种JS调试器绑定IE并将错误追踪到其核心之后。
https://stackoverflow.com/questions/-100000222
复制相似问题