Я почти на своем месте, за исключением того, что не могу понять, как превратить 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 />
, первый <h2>
и первый <p>
(не обернутый вокруг изображения) и распечатать их в следующем порядке:
<img />
<h2>
<p>
А остальные могут просто уйти ... Это просто сводный вид ...
Ну, ладно ... Я добавил это внизу, и похоже, что оно работает:
$j(this).each(function() {
var img = $j('img');
$j(img).wrap($j('<a>').attr('href', '/'));
});