【发布时间】:2009-10-04 03:51:51
【问题描述】:
我几乎达到了我想要的位置,只是我不知道如何将 var imgt 转换为超链接图像。我已经尝试了一些东西,但它一直返回 [object][Object]
$j('#hp-featured-item > div[id^="post-"]').each(function() {
var id=this.id.match(/post-(\d+)/);
var imgt = $j("img:eq(0)");
// I tried this but it didn't work
// var imgt = $j("<a href='/blog/?p="+id[1]+"'>"+$j("img:eq(0)")+"</a>");
var pt = $j("p:not(:has(img)):eq(0)");
var hh = $j("h2:eq(0)");
$j(this).html('');
$j(this).append(imgt).append(hh).append(pt);
});
/// 更新代码
$j('#hp-featured-item > div[id^="post-"]').each(function() {
var id=this.id.match(/^post-([0-9]+)$/);
var imgt = $j("img:eq(0)");
$j(imgt).wrap($j('<a>').attr('href', '/'));
var pt = $j("p:not(:has(img)):eq(0)");
var hh = $j("h2:eq(0)");
$j(this).html('');
$j(this).append(imgt).append(hh).append(pt);
});
好的,我把它放在评论中,但我也会根据你的建议把它放在这里......本质上,原始的html输出在结构上差别很大。有时是
<img />
<h2> </h2>
<p> </p>
<p> <img /> </p>
<h2> </h2>
<p> </p>
有时候,只是:
<h2> </h2>
<p><img /></p>
<p> text </p>
等等……
我想拉出第一个<img />、第一个<h2>和第一个<p>(没有包裹在图像上)并按顺序打印出来:
<img />
<h2>
<p>
而且,剩下的就可以走了……这只是一个摘要视图……
好吧,好吧...我在底部添加了这个,它似乎可以工作:
$j(this).each(function() {
var img = $j('img');
$j(img).wrap($j('<a>').attr('href', '/'));
});
【问题讨论】:
-
“按该顺序打印出来” - 您想要的输出 html 在 img 周围没有锚点。应该吗?
-
当你说它返回 "[object][Object]" .. 这怎么不是你想要的?毕竟,您 正在 处理一个 jQuery 对象。如果您提醒任何对象,它会给您 [object][Object],因为您没有执行低级 DOM 脚本。
-
“我已经尝试了一些东西” - 你能更具体地说明你的代码是如何不起作用的吗?因为警报时任何 jQuery 对象都是对象对象,所以该部分根本不重要。如果您在其中一个部门中获取整个 HTML 源代码的 sn-p,完全发布源代码,在 JS 完成其工作后显示源代码的输出,并指出它实际上没有做什么,那就容易多了它应该做什么。
标签: jquery hyperlink element add