Почему обертка игнорирует последнюю обертку? - PullRequest
0 голосов
/ 07 октября 2009

Я пытаюсь превратить 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]));
    });

Ответы [ 2 ]

0 голосов
/ 07 октября 2009

Вы чрезмерно используете функцию 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]));
});

В этом коде происходили разные сумасшедшие вещи. Помните, что вам нужно изменить объекты перед добавлением их к другому объекту (если у вас нет уникального способа идентифицировать их после факта, то есть идентификатора).

Удачи.

0 голосов
/ 07 октября 2009

Почему вы ожидаете, что $ j (больше) будет соответствовать чему-либо?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...