2009-10-07 5 views
0

"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])); 
    }); 

답변

0

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 (ID) 이후 고유 한 식별 방법이없는 경우).

행운을 비네.

0

왜 $ j (개)가 다른 것과 일치합니까?

관련 문제