IE中奇怪的jQuery错误

时间:2011-01-13 01:56:03

标签: javascript jquery xml

IE在这里给我一个错误,FireFox的工作正常:

  $("#searched").text("");
  searched = $("messages > searched", xml).text();

第一行清空我的< div>。第二行从我的xml结果中获取一个值。该错误特别在第二行。它表示该对象不支持此属性或方法。

谢谢!

3 个答案:

答案 0 :(得分:0)

当元素的Id与变量相同时,我在IE中看到了奇怪的错误,如下所示:

var my_id = document.getElementById('my_id');

奇怪?确实如此,但我看到它不止一次发生。

解决方案:重命名变量

答案 1 :(得分:0)

searched = $(xml).find("messages > searched").text();

答案 2 :(得分:0)

消息是您的根节点吗?即你的xml结构如下:

<?xml version="1.0" encoding="utf-8"?>
<messages>
  <searched>blah</searched>
  <searched>boo</searched>
</messages>

我假设你的xml是一个jquery对象,即

var xml = $("<?xml ...?><messages><searched>...</searched>...</messages>");
var searched = $("messages > searched", xml).text(); //this should assign blahbloo to searched.

在我的实验中,当消息是根节点时,您将无法执行此操作,但如果您更改xml输入并将消息包装在另一个根元素中,则它在FF,Chrome和IE上运行正常。

像这样:

<!DOCTYPE html>
<html>
  <head>
    <title>Test</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
  </head>
  <body>
    <div class="container">
    </div>
  </body>

  <script type="text/javascript">
    $(function() {
      var input = "<?xml version=\"1.0\" encoding=\"utf-8\"?><foo><messages><searched>Searched Node 1</searched><searched>Searched Node 2</searched></messages></foo>";

      var xml = $(input);

      alert($("messages > searched", xml).text());

      $("messages > searched", xml).each(function() {
        alert($(this).text());
      });
    });
  </script>
</html>

所以,要么将xml包装在另一个根元素中,要么绕过消息,然后执行$(“搜索”,xml)......这应该可以正常工作。