我试图把more变成一个超链接,但它好像完全忽略了最后一个换行。
$j('#sub > div[id^="post-"]').each(function() {
var sid=this.id.match(/^post-([0-9]+)$/);
var sfimg = $j(this).find("img");
var sfhh = $j(this).find("h2");
var sfpt = $j(this).find("p:not(:has(img)):eq(0)");
var more = 'more';
$j(this).html(sfimg);
$j(sfimg).wrap($j('<a>').attr('href', '/blog/?p='+sid[1]));
$j(this).append(sfhh).append(sfpt);
$j(sfpt).wrap($j('<div>').attr('class', 'sfentry'));
$j(this).append('<div class="morelink">'+more+'</div>');
$j(more).wrap($j('<a>').attr('href', '/blog/?p='+sid[1]));
});发布于 2009-10-07 14:58:56
您过度使用了jquery函数(在您的示例中为$j()),并且以错误的顺序进行操作。此外,可能存在这样的情况,例如,$(this).find('img')可能会返回多个元素……不过,我对你的场景不太确定。
试试这个(可能并不完美,但它应该会让你朝着正确的方向前进):
$j('#sub > div[id^="post-"]').each(function() {
var sid = this.id.match(/^post-([0-9]+)$/);
var sfimg = $j(this).find("img");
var sfhh = $j(this).find("h2");
var sfpt = $j(this).find("p:not(:has(img)):eq(0)");
var more = 'more';
sfimg.wrap($j('<a>').attr('href', '/blog/?p='+sid[1]));
$j(this).html(sfimg);
sfpt.wrap($j('<div>').attr('class', 'sfentry'));
// You do realize what you have will append the paragraph to your h2 tag, right?
// I think you want:
/*
$j(this).append(sfhh).end().append(sfpt);
*/
$j(this).append(sfhh).append(sfpt);
$j(this).append('<div class="morelink">'+more+'</div>');
$j('.morelink',this).wrap($j('<a>').attr('href', '/blog/?p='+sid[1]));
});在这段代码中发生了各种各样疯狂的事情。请记住,在将对象附加到另一个对象之前,您需要修改这些对象(除非您有某种独特的方式在事后识别它们,即ID)。
祝好运。
发布于 2009-10-07 14:49:45
为什么你希望$j(more)能匹配任何东西?
https://stackoverflow.com/questions/1532016
复制相似问题