jquery选择器在IE 7或兼容模式下不工作

jquery选择器在IE 7或兼容模式下不工作,jquery,Jquery,我有以下jquery在IE 8中运行良好: var myVar = $(myField).parent().parent().find("a#hyp"); $(myVar).text("Notified!"); 但是,当我将浏览器模式设置为IE7或IE8兼容模式时,它不起作用。我相当肯定这是选择器(“a#hyp”)的问题,因为我之前遇到了类似的问题,jquery没有拾取锚定标记的单击事件 锚定标记是一个简单的标记: <a id="hyp" href="#">Notify</a

我有以下jquery在IE 8中运行良好:

var myVar = $(myField).parent().parent().find("a#hyp");
$(myVar).text("Notified!");
但是,当我将浏览器模式设置为IE7或IE8兼容模式时,它不起作用。我相当肯定这是选择器(“a#hyp”)的问题,因为我之前遇到了类似的问题,jquery没有拾取锚定标记的单击事件

锚定标记是一个简单的标记:

<a id="hyp" href="#">Notify</a>


对此有什么想法吗?

我想大胆猜测一下,您可能有多个与
id=“hyp”
的链接,这就是为什么要使用
$(myField).parent().parent().find(“a#hyp”)。您的页面中不能有多个具有给定id的对象,如果这样做,您将在不同的浏览器中得到不一致的结果。在任何情况下,由于所有ID都必须是唯一的,请将您的代码更改为(不需要选择器的任何其他限定):


在jQuery内部,这将变成一个
文档。getElementById(“hyp”)
,在所有浏览器中都能正常工作。

为了完整起见,你能显示HTML吗?它不应该导致这个问题,但是选择器中的
a
应该是不必要的,因为只有一个元素具有给定的ID。如果没有
a
,它可能会更快。另外,
myVar
已经是一个jquery对象,因此无需在第二行重新包装它。@如果此脚本在多个页面上运行,并且在不同页面上有多个元素具有该
id
属性,则使用
a
的kingjiv非常重要。很少见,也不是最好的做法,但有时确实如此。@kingjiv-thx了解双重包装jquery对象的技巧。我不知道我在做什么!你说得对。这个页面上有多个相同ID的锚定标签。但是,这很令人沮丧,因为我没有太多的控制权。这个特定的代码是.NET,我拥有的是GridView的ItemTemplate中的锚定标记。将GridView渲染到浏览器时,它会在每行中放置一个具有相同ID的定位标记。你让我想也许我应该使用一个.NET超链接,然后每一行的ID都会不同。这可能会解决我的问题。问题正如您所建议的:具有相同ID的锚标记。我通过使用asp.net超链接修复了它,然后它呈现了具有不同ID的锚标记。当然,这迫使我稍微更改了jquery选择器,但最终效果很好。
$("#hyp").text("Notified!");