首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >IE中的jQuery CSS选择器应该怎么使用?

IE中的jQuery CSS选择器应该怎么使用?
EN

Stack Overflow用户
提问于 2018-06-05 01:38:00
回答 2查看 0关注 0票数 0

以下在Fi​​refox中有效,但在IE7和8中有效:

代码语言:javascript
复制
$("#my-first-div, #my-second-div").hide();

所以必须这样做:

代码语言:javascript
复制
$("#my-first-div").hide();
$("#my-second-div").hide();

这是正常的吗?

我的实际的代码是这样的:

代码语言:javascript
复制
$("#charges-gsm,#charges-gsm-faq,#charges-gsm-prices").html(html);

我的错误是这样的

代码语言:javascript
复制
( 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 
EN

回答 2

Stack Overflow用户

发布于 2018-06-05 10:10:27

指定的位置状态:

代码语言:javascript
复制
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是:

代码语言:javascript
复制
nodeName:function(elem,name){
    return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();
}

这本身就是为调用而创建的封闭jQuery.extend()。所以如果你做了一个“查看源代码”或者它的IE代码,那么是否还有其他的字符串“nodeName”可能会干扰jQuery的发生。

还可以通过创建一个xx.html文件并在IE7 / 8中打开它来测试以下内容吗?在Ubuntu中的Firefox 3下运行良好,在选择器中的逗号之后有或没有空格。

代码语言:javascript
复制
<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>
票数 0
EN

Stack Overflow用户

发布于 2018-06-05 11:17:37

你的一个元素嵌套在另一个元素内吗?

即:

代码语言:javascript
复制
<div id="foo">
  <div id="bar"> 
    <div id="baz">
  </div>
</div>

如果是这样的话,你可能遇到了一个指针问题,在你试图找出它的div之前,IE可能已经释放了它。行为

代码语言:javascript
复制
$("#foo,#bar,#baz").html("xx"); 

在这个场景中是:

  1. 将#foo替换为xx
  2. 将#bar替换为xx
  3. 将#baz替换为xx

但是,如果在第2阶段和第3阶段,#bar和#baz不再存在(如果xx碰巧包含#bar和#baz的副本并不重要,它们可能会是不同的对象,并且要替换的初始对象已被捕获,只是不再位于DOM中: /)

可以通过在try / catch中封装这个过程来压制这个错误

代码语言:javascript
复制
try { 
  $("#foo,#bar,#baz").html("xx"); 
}
catch( e ) 
{
   /* DO NOTHING D: */ 
}

但是尽量在获得某种JS调试器绑定IE并将错误追踪到其核心之后。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档