我几乎要去的地方,除了我无法弄清楚如何将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>
(没有包裹图像)并按顺序打印出来:< / p>
<img />
<h2>
<p>
而且,其余的可以消失......这只是一个总结...
好吧,好吧......我把它添加到底部,似乎有效:
$j(this).each(function() {
var img = $j('img');
$j(img).wrap($j('<a>').attr('href', '/'));
});
答案 0 :(得分:4)
您可以使用jQuery.prototype.wrap:
$j('#hp-featured-item > div[id^="post-"]').each(function() {
var id=this.id.match(/post-(\d+)/);
var imgt = $j("img:eq(0)");
$(imgt).wrap(
$('<a>').attr('href', '/blog/?p=' + id[1])
);
});
这对我有用:
$('.post').each(function() {
var img = $('img', this), src = $(img).attr('src')
$(img).wrap(
$('<a>').attr('href', src)
);
});
确保您设置的href属性是正确的。