var imgt をハイパーリンクされた画像に変換する方法がわからないことを除いて、私はほぼ自分がなりたい場所にいます。いくつか試してみましたが、[オブジェクト] [オブジェクト]を返し続けます
$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 />
first 、 first <h2>
、および first <p>
(画像にラップされていない) をプルし、その順序で出力したい:
<img />
<h2>
<p>
そして、残りはただ消えることができます...それは単なる要約ビューです...
さて、わかりました...これを一番下に追加しましたが、うまくいくようです:
$j(this).each(function() {
var img = $j('img');
$j(img).wrap($j('<a>').attr('href', '/'));
});