2009-10-12 4 views
0

다음 마크 업에는 일부 추가 요소가 주입됩니다 (예 : 일부 플래시가 포함 된 div). 어떻게 하나의 div에 p 태그를 모두 동적으로 랩핑하고 새로 만든 div를 토글하기 위해 그 위에 버튼을 추가 할 수 있습니까?jquery wrap 형제 요소

<div class="post"> 
    <p>blquehrgéoqihrteoijth</p> 
</div> 

<div class="post"> 
    <p>blquehrgéoqihrteoijth</p> 
    <p>blquehrgéoqihrteoijth</p> 
    <p>blquehrgéoqihrteoijth</p> 
    <p>blquehrgéoqihrteoijth</p> 
</div> 

답변

2

나는 간단하게하기 위해 다음을 수행합니다 :

$('.post').prepend("<h3 class='showText'>biography</h3>\n<div class='toggle'>"); 
$('.post').append("</div>"); 

당신이 필요로 무엇을해야합니까.

편집 1 : 쉽게 가독성 여기 추가 cballou의 코멘트 코드 :

$j('h3').live('click', function() { 
    $j(this).toggleClass('hideText').slideToggle(300); 
}); 
+0

나는 토퍼에 동의. 당신은 또한 slideToggle 이벤트를 허용하기 위해 jQuery "live"함수를 활용하고 싶을 것입니다 : $ j ('h3') live ('click', function() {$ j (this) .toggleClass (' hideText '). slideToggle (300);}); –

+0

훨씬 간단하게 해결할 수 있습니다. 그러나 마크 업 자체는 때때로 다른 divs에 의해 주입 될 것이고 나는 단지 p 태그를 토글하고 싶을 뿐이다. 불행히도 나는 거기에 마크 업을 변경하는 액세스 서버 쪽이 없다 ... – Turbodurso

1

난 그냥 기존의 HTML을 추출하고 (텍스트로)를 포장 것, 그 다음 다시 삽입합니다.

$('.post').each(function() { 
    $(this).html('<h3 class="showText">biogrpahy</h3><div class="toggle">' 
        + $(this).html() 
        + '</div>'); 
}); 
+0

그래, 그것도 아주 잘 작동합니다. – KyleFarris

0
$j('.post').wrapAll("<div class='toggle'></div>"); 
$j('.toggle').before('<h3 class="showText">bibliography</h3>'); 
$j('h3').live('click',function(){ 
    $j(this).toggleClass('hideText'); 
    $j('.toggle').slideToggle(300); 
});