在JQuery中使用自定义xml元素

在JQuery中使用自定义xml元素,jquery,Jquery,鉴于以下情况: <p>This is a <fund id="12345">Test Fund</fund>. More text.</p> $('fund').each(function(index) { alert($(this).text()); }); 我可以按如下方式检索id属性: alert($(this).attr("id")); <html xmlns:myns> <head> <ti

鉴于以下情况:

<p>This is a <fund id="12345">Test Fund</fund>. More text.</p>
$('fund').each(function(index) {

    alert($(this).text());

});
我可以按如下方式检索id属性:

alert($(this).attr("id"));
<html xmlns:myns>
<head>
<title>Test</title>
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.4.min.js"></script>

<script type="text/javascript">
    $(document).ready(function(){
       // Your code here
       $('myns:fund').each(function(index) {
            alert(index + ': ' + $(this).attr("id"));
        });
     });
</script>

</head>
<body>
<p>Sample paragraph.</p>
<p>This is a <myns:fund id="12345">Test Fund</fund>. More text.</p>
</body>
</html>
我在text()html()等方面运气不好

编辑: 起初我只试过IE8,但在firefox中测试后,我发现它与FF配合得很好。然后,我在IE开发工具中进行了回顾,并注意到Dom资源管理器将开始标记视为一个独立的节点,并对剩余的文本和结束标记执行此操作

我发现了一些关于使用自定义命名空间的信息,如下所示:

alert($(this).attr("id"));
<html xmlns:myns>
<head>
<title>Test</title>
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.4.min.js"></script>

<script type="text/javascript">
    $(document).ready(function(){
       // Your code here
       $('myns:fund').each(function(index) {
            alert(index + ': ' + $(this).attr("id"));
        });
     });
</script>

</head>
<body>
<p>Sample paragraph.</p>
<p>This is a <myns:fund id="12345">Test Fund</fund>. More text.</p>
</body>
</html>

试验
$(文档).ready(函数(){
//你的代码在这里
$('myns:fund')。每个(功能(索引){
警报(索引+':'+$(this.attr(“id”));
});
});
示例段落

这是一个测试基金。更多文本


这也会失败,但会在IE DOM explorer中正确呈现。

尝试将
标记的内容作为HTML字符串抓取,并将其传递给jQuery构造函数,而不是尝试直接从页面获取基金标记:

var html = $("p").html();
alert($("<div>" + html + "</div>").find("fund").text());
var html=$(“p”).html();
警报($(“”+html+“”)。查找(“基金”).text();

编辑:您需要将html包装在一个div(或其他)元素中,这样jQuery就不会混淆并认为它是一个选择器。在这里工作:

在Firefox 3.6中,当我在最后一个括号前添加缺少的大括号时,您的代码对我来说工作得很好:

$('fund').each(function(index) {
    alert($(this).text());
});
上面正确打印了
测试基金

编辑:我通过调用
元素,应用于结果并调用该元素,在Internet Explorer 8中实现了该功能:


你在用什么样的文件?HTML?你应该更新它以更正}错误,并注意IE8问题。自从发布这个问题后,我在firefox中进行了测试,并在works中发现了它(没有输入错误!)。打开IE8开发者工具后,我注意到开始标记被视为一个独立节点,其他所有内容都被视为“”元素的子节点。修复IE是目标。有什么想法吗?@HectorMac,我也是。我会尝试找到一些东西。查看选择器库的代码,发现它使用本机的
getElementsByTagName
进行选择确实令人沮丧,它在IE8中确实有效,但在这种情况下,$('element')不会。这可能是一个bug,可能会在sizzleJS bug页面中被注意到。是的,但这是出于错误的原因<代码>这又是什么????测试基金。更多文本。

sizzleJS库和IE8有些问题。@user257493,我同意这不是一个通用的解决方案。我只是想强迫好老头儿从提问者的例子中给出正确的结果:)