jQuery属性选择器在$ .ajax调用中不起作用(IE6,IE7)

时间:2011-08-04 05:04:59

标签: jquery ajax internet-explorer

我试图在AJAX调用后在我的内容中选择一些链接,但它似乎不适用于IE6和IE7(未测试8或9)。单击时应该覆盖链接,并且应该触发警报。但是,IE仍试图转到该地址。它在Chrome和Firefox中运行良好。

这是主要的HTML文档

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Cavern Sounds - Music production services</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
</head>
<body>
<a href="someplace.html">someplace 1</a>
<div id="content"></div>
<script type="text/javascript">
$.ajax({
  url: "content.html",
  success: 
    function(html){
      $("#content").html(html);
      $('a[href="someplace.html"]').click(function(e){
        e.preventDefault();
        alert("hello world");});
    }
});
</script>
</body>
</html>

这里是“content.html”,AJAX调用检索的片段

<a href="someplace.html">someplace 2</a>

有趣的是,IE仍然会覆盖第一个链接(AJAX调用未检索到的链接)。它只是AJAX调用检索到的内容中没有被覆盖的链接。

任何建议都表示赞赏。谢谢!

3 个答案:

答案 0 :(得分:2)

请尝试使用实时绑定事件

$(function(){

$('a[href*="someplace.html"]').live('click', function(e){
        e.preventDefault();
        alert("hello world");
});

$.ajax({
  url: "content.html",
  success: 
    function(html){
      $("#content").html(html);
   }
});

});

答案 1 :(得分:1)

试试此代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Cavern Sounds - Music production services</title>
<script type="text/javascript" 

src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
</head>
<body>
</body>
<script type="text/javascript">
$.ajax({
  url: "content.html",
  success: 
    function(html){
      $("body").html(html);
      $('a[href*="someplace.html"]').live("click",(function(e){
        e.preventDefault();
        alert("hello world");}));
alert($('a[href*="someplace.html"]').size());
    }

});
</script>

此处有更多详情Error in jquery attribute selector and IE6-7

答案 2 :(得分:0)

尝试使用.live()代替.click(),甚至更好地使用.delegate()。

您尝试绑定的链接稍后已经介绍,在.click()绑定之前可能无法使用。

这是一个JSfiddle,但现在看来它可能是一个选择器问题...... JSFiddle