Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery属性选择器在$.ajax调用(IE6、IE7)中不起作用_Jquery_Ajax_Internet Explorer - Fatal编程技术网

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

jQuery属性选择器在$.ajax调用(IE6、IE7)中不起作用,jquery,ajax,internet-explorer,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>

在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>

洞穴之声-音乐制作服务
$.ajax({
url:“content.html”,
成功:
函数(html){
$(#content”).html(html);
$('a[href=“someplace.html”]”)。单击(函数(e){
e、 预防默认值();
警报(“你好世界”);});
}
});
这里是“content.html”,AJAX调用正在检索的代码片段

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

需要注意的一件有趣的事情是,IE仍然覆盖第一个链接(AJAX调用没有检索到的链接)。只是AJAX调用检索到的内容中的链接没有被覆盖

如有任何建议,我们将不胜感激。谢谢

尝试使用.live()而不是.click(),或者更好地使用.delegate()

您尝试绑定的链接已在稍后引入,在.click()绑定之前可能不可用

这里有一个JSFIDLE,但现在看起来可能是选择器问题。。。

尝试使用.live()而不是.click(),或者更好地使用.delegate()

您尝试绑定的链接已在稍后引入,在.click()绑定之前可能不可用

这里有一个JSFIDLE,但现在看起来可能是选择器问题。。。

请尝试使用live绑定事件

$(function(){

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

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

});

请尝试使用live绑定事件

$(function(){

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

$.ajax({
  url: "content.html",
  success: 
    function(html){
      $("#content").html(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>
</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>

洞穴之声-音乐制作服务
$.ajax({
url:“content.html”,
成功:
函数(html){
$(“body”).html(html);
$('a[href*=“someplace.html”]').live(“单击”),(函数(e){
e、 预防默认值();
警报(“你好世界”);});
警报($('a[href*=“someplace.html”]').size());
}
});
更多详细信息请参见此代码

<!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>

洞穴之声-音乐制作服务
$.ajax({
url:“content.html”,
成功:
函数(html){
$(“body”).html(html);
$('a[href*=“someplace.html”]').live(“单击”),(函数(e){
e、 预防默认值();
警报(“你好世界”);});
警报($('a[href*=“someplace.html”]').size());
}
});


这里的更多细节

作为旁白,您应该将最后一个
脚本
标记放在身体或头部内。啊,谢谢,是的,我在制作示例时弄错了。您可以尝试使用href的选择器来选择包含“someplace.html”的href,而不是像这样的等号:
$('a[href*=“someplace.html”])
或此(以“
$('a[href$=“someplace.html”]')
@jfriend00是的,事实证明确实如此。然而,=选择器仍然适用于第一个链接,但AJAX链接需要*=选择器才能工作。有人能提供一个解决方案,允许在AJAX查询中使用=选择器吗?或者解释为什么不能在这种情况下使用它?我只知道如果您h使用Javascript链接的href值,它将返回一个完全限定的URL,而不管源代码中最初是什么,因此可能这就是为什么您不能仅将文件名与=匹配的原因,即使这是页面中最初的内容。也许IE对原始页面中的链接与以后添加的链接的作用不同。顺便说一句,y你应该把你最后的
script
标记放在身体或头部。啊,谢谢,是的,我在做这个例子的时候弄错了。你可以尝试使用href的选择器来包含“someplace.html”,而不是像这样的等号:
$('a[href*=“someplace.html”])
或者这个(以:
$('a[href$=“someplace.html”]))
@jfriend00是的,事实证明确实如此。然而,=选择器仍然适用于第一个链接,但AJAX链接需要*=选择器才能工作。有人能提供一个解决方案,允许在AJAX查询中使用=选择器吗?或者解释为什么不能在这种情况下使用它?我只知道如果您h使用Javascript链接的href值,它将返回一个完全限定的URL,而不管源代码中最初是什么,因此可能这就是为什么您不能将文件名与=匹配的原因,即使这是页面中最初的内容。可能IE对原始页面中的链接与稍后添加的链接的作用不同。嗯,只是尝试一下d it.在IE6和IE7中似乎仍然不起作用,但是…=/您可以提醒ajax调用成功处理程序中的html内容,并查看其中锚定标记的href吗?我认为选择器不匹配,因此事件不会触发。有效!但是,只要我将选择器改为*=o,我的原始代码就会起作用f=。奇怪的是,我从AJAX请求中提醒了内容,URL仍然是“someplace.html”,所以我不知道为什么=不起作用…我宁愿使用=而不是*=因为它更具体。这可能是jQuery中的错误吗?它不是错误。“=”查找与“*=”完全匹配的地方查找传递的属性中的包含项。我很高兴它起作用了。谢谢。是的,但是在这种情况下,我不想查找精确匹配项吗?嗯,刚刚尝试过。在IE6和IE7中似乎仍然不起作用,但是…=/您可以提醒ajax调用成功处理程序中的html内容,并查看其中锚定标记的href吗?我认为选择器不匹配,因此事件没有触发。Works!尽管如此,当我将选择器更改为*=而不是==时,我的原始代码仍然有效。奇怪的是,我从AJAX请求中警告了内容,URL仍然是“someplace.html”,所以我不知道为什么=不起作用…我宁愿使用=而不是*=因为它更具体。这可能是jQuery中的一个bug吗