我有一个xml文档(来自feed),我正在从中提取值:
$(feed_data).find("item").each(function() {
if(count < 3) {
//Pull attributes out of the current item. $(this) is the current item.
var title = $(this).find("title").text();
var link = $(this).find("link").text();
var description = $(this).find("description").text();
现在在“description”中我需要获取img
元素,但这会给我带来一些问题。 “descripttion”是一个常规的字符串元素,似乎我不能在此调用“.find()”方法,所以我该怎么办?
我试过调用.find()
:
var img = $(this).find("description").find("img");
但这是不行的。 img被包裹在一个跨度中,但我也无法达到这一点。有什么建议?我宁愿避免使用子串和正则表达式解决方案,但我不知所措。
我也尝试将“description”字符串转换为xml对象,如下所示:
var parser = new DOMParser();
var desc = parser.parseFromString(test,'text/xml');
$(desc).find("img").each(function() {
alert("something here");
});
但这也不起作用。它似乎会,但我得到一个“文档没有很好的形成”错误。
答案 0 :(得分:3)
尝试在虚拟div中包含description标记的内容,这似乎对我更有效,并允许jQuery的.find()
按预期工作。
e.g。
$(feed_data).find("item").each(function() {
if(count < 3) {
//Pull attributes out of the current item. $(this) is the current item.
var title = $(this).find("title").text();
var link = $(this).find("link").text();
var description = '<div>' + $(this).find("description").text() + '</div>';
var image = $(description).find('img');
答案 1 :(得分:3)
嗨,谢谢你的回复。我给GregL打了嘀嗒,因为我确信他的解决方案会起作用,因为原理与我最终的结果相同。我的解决方案如下:
$(feed_data).find("item").each(function() {
if(count < 3) {
//Pull attributes out of the current item. $(this) is the current item.
var title = $(this).find("title").text();
var link = $(this).find("link").text();
var description = $(this).find("description").text();
var thumbnail = "";
var temp_container = $("<div></div>");
temp_container.html(description);
thumbnail = temp_container.find("img:first").attr("src");
所以将字符串包装在div中,然后使用“find()”来获取第一个img元素。我现在有了图像源,可以根据需要使用。
答案 2 :(得分:1)
也许您应该尝试将描述文本转换为html标记,然后尝试通过jquery遍历它
$('<div/>').html($(this).find("description").text()).find('img')
note :未经过测试