鉴于以下内容:
<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资源管理器中正确呈现。
答案 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/