在JQuery中使用自定义xml元素

时间:2010-12-17 14:17:15

标签: 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"));

我对text()html()等没有运气。

修改 最初我只尝试过IE8,但是在firefox中测试之后我发现它适用于FF就好了。然后,我在IE开发工具中进行了审核,发现Dom浏览器将开始标记视为独立节点,并将其与剩余文本一起处理,并关闭标记。

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

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

这也失败了,但在IE DOM资源管理器中正确呈现。

2 个答案:

答案 0 :(得分:2)

当我在最后一个括号前添加缺少的大括号时,你的代码在我的Firefox 3.6中运行正常:

$('fund').each(function(index) {
    alert($(this).text());
});

以上正确打印Test Fund

编辑:我通过调用<p>元素上的html(),将$()应用于结果并调用{{3},让它在Internet Explorer 8中运行在那:

$(document).ready(function(index) {
    alert($($("p").html()).text());
});

答案 1 :(得分:0)

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

var html = $("p").html();
alert($("<div>" + html + "</div>").find("fund").text());

编辑:你需要将html包装在div(或其他)元素中,这样jQuery就不会感到困惑,并认为它是一个选择器。在这里工作:http://jsfiddle.net/uRggd/1/