更新:已编辑问题以添加更多信息。
我的应用程序直接在浏览器中查看 XML 数据——经过一些轻量级的客户端 XSLT 处理之后,我们可以假设这里只是一个瘦 HTML 包装器中的身份转换。
<xsl:output method="xml" indent="no" encoding="utf-8" />
<xsl:template match ="/">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
</head>
<body>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</body>
</html>
</xsl:template>
使用 jQuery 1.8.3,这
$("*[target]").click(function (event) {
alert("click");
});
将(或应该)选择具有@target 属性的元素。
这在 IE 和 Chrome 中运行良好,但在 Firefox 中,除非我将 XSLT 输出更改为“html”,否则 jQuery 不会选择任何内容,这会弄乱其他东西。
在 Firefox 中,让 jQuery 选择非 HTML、XML 元素的正确方法是什么,或者——这可能以不同的方式说同样的事情——让 jQuery 选择自定义 HTML 元素?
更新:找到问题的根源。选择器不会选择,因为它们在 $(document).ready() 内,并且不会触发在 Firefox 中使用 XSLT (output='xml') 样式的 XML 文档。其他人有同样的问题:http: //forum.jquery.com/topic/document-ready-with-xslt-in-xhtml
我还没有找到参数和代码顺序的组合来触发它。到目前为止,我的解决方法是使用 $(window).load() 而不是 $(document).ready()。
更多更新现在有一个jQuery 错误报告,#13193。http://bugs.jquery.com/ticket/13193