2013-02-09 49 views
0

UPDATE 爲JLRiche下面的生成

HTML結構的PHP foreach循環中jQuery代碼(這裏是整個DIV ID = content_body_right結構):

<div id="content_body_right"> 
     <p class="user_text">Tim Flanagan</p><p class="date_text">02-06-2013 @ 12:00PM</p> 
       <p class="message_text">Playin Augusta today. What a beautiful course!</p> 
       <div id="activity_image"> 
        <img src="images/activities/1/actimg.jpg" width="435" /> 
       </div> 
       <div id="tips"> 
        <div id="tip_cap_left"> 
         <a href="dashboard.php?captip=tipyourcap" title="Tip Your Cap" ></a> 
        </div> 
        <div id="tip_cap_right"> 
         <p class="tips_right">12 Tips of the Cap</p> 
        </div> 
       </div> 
       <p class="comments_label"> 
        4 Comments&nbsp;&nbsp;&nbsp; 
        <a href="#" class="see_all" style="display:inline-block" title="See All Comments">see all</a> 
        <a href="#" class="collapse" style="display:none" title="Collapse Comments">collapse</a> 
       </p> 
       <div id="comment1"> 
        <div id="comment_user_img"> 
         <img src="images/defaultuserimg.jpg" width="30" height="30" /> 
        </div> 
        <div id="comment_user"> 
         <p class="user_text_comment">Tim Flanagan</p><p class="date_text_comment">02-06-2013 @ 12:00PM</p> 
         <p class="message_text_comment">Nice jealous of you bro.</p> 
        </div> 
       </div> 
       <div class="comment2" style="display:none; clear:both; margin:0px; overflow:auto"> 
        <div id="comment2_sub"> 
         <div id="comment_user_img"> 
          <img src="images/defaultuserimg.jpg" width="30" height="30" /> 
         </div> 
         <div id="comment_user"> 
          <p class="user_text_comment">Tim Flanagan</p><p class="date_text_comment">02-06-2013 @ 12:00PM</p> 
          <p class="message_text_comment">Nice jealous of you bro.</p> 
         </div> 
        </div> 
        <div id="comment2_sub"> 
         <div id="comment_user_img"> 
          <img src="images/defaultuserimg.jpg" width="30" height="30" /> 
         </div> 
         <div id="comment_user"> 
          <p class="user_text_comment">Tim Flanagan</p><p class="date_text_comment">02-06-2013 @ 12:00PM</p> 
          <p class="message_text_comment">Nice jealous of you bro.</p> 
         </div> 
        </div> 
        <div id="comment2_sub">     
         <div id="comment_user_img"> 
          <img src="images/defaultuserimg.jpg" width="30" height="30" /> 
         </div> 
         <div id="comment_user"> 
          <p class="user_text_comment">Tim Flanagan</p><p class="date_text_comment">02-06-2013 @ 12:00PM</p> 
          <p class="message_text_comment">Nice jealous of you bro.</p> 
         </div> 
        </div> 
       </div> 
    </div> 

讓我知道,如果你需要更多的結構,因爲在它上面和下面都有很多。希望這可以幫助。 我真的很感謝你的幫助!

結束時更新

晚上好一切,

我需要動態創建的數據庫結果X量的jQuery腳本的foreach的X量。 X表示數字會有所不同。這是一種論壇類型的東西,你看到原來的帖子並顯示一個回覆,你會點擊查看全部或全部摺疊來查看或摺疊其餘的。我正在使用典型的$ i變量在foreach循環內增加我的html元素,所以我需要爲每個元素輸出jquery點擊函數。

我需要PHP創建的代碼如下:

$jquery .= "$('#see_all$i').click(function() { 
    $('#comment2_$i').slideDown('fast'); 
    $('#collapse$i').css('display', 'inline-block'); 
    $('#see_all$i').css('display', 'none'); 
    return false; 
}); 

$('#collapse$i').click(function() { 
    $('#comment2_$i').slideUp('fast'); 
    $('#collapse$i').css('display', 'none'); 
    $('#see_all$i').css('display', 'inline-block'); 
    return false; 
})"; 

任何幫助將始終將不勝感激!

感謝

+0

你正在做它錯誤的方式,建立一個類,把索引放在一個data-elid屬性(例如);在js中綁定類來點擊事件,用'$(this).data(「elid」)檢索id。 – mikakun 2013-02-09 05:29:43

+0

只需將它放在頁面頂部的腳本標記中,它就可以用於所有的回覆或任何地方你想使用,而不是每個回覆的代碼。 :/ – devWaleed 2013-02-09 05:36:40

+0

如果您發現自己使變量名稱,函數,類,ID或任何其他類型的標識符變爲不同的數字或名稱的一部分,則應該退一步考慮是否有更通用的方法來解決您的問題 – Eevee 2013-02-09 06:24:33

回答

0

HTML:

<div class="seeall" data-elid="1">...</div> 
... 
<div class="collapse" data-elid="1">...</div> 
... 

JS:

var $bdy=$(document.body) 
$bdy.on("click",".seeall",function(e) { 
     var el=$(this).css('display','none').data("elid"); 
     $('#comment2_'+el).slideDown('fast'); 
     $('.collapse[data-elid="'+el+'"]').css('display','inline-block'); 
    }) 
    .on("click",".collapse", function(e) { 
       //same same 
    }); 
+0

偉大的道理,一個問題,我仍然增加了comment2_ div,id = see_all的鏈接和我的foreach循環中id = collapse的鏈接? – 2013-02-09 05:48:19

+0

真的取決於你,這個例子向你展示了你可以同時做兩件事(我也可以使用class/data屬性來進行評論,而不用打擾ids;如果你想迭代id而不用class或者data-attribute,那麼selector變成'[id^=「seeall」]'那麼你有一個額外的步驟來恢復js中的id。類+數據看起來更直接/更容易閱讀代碼 – mikakun 2013-02-09 06:03:42

+0

好吧,開始明白,你說的類+數據方法,我只需要增加數據elid屬性,正確,而不是所有三個前面提到的? – 2013-02-09 06:12:34

2

生成相同的jQuery代碼的多,稍有不同的副本是不是一個很好的設計,恕我直言。你應該寫jQuery代碼的方式,只需要在你的頁面一次,如:

$('.see_all').click(function(){ 
    var thisItem = $(this); 
    thisItem.parent().find('.comment').slideDown('fast'); 
    thisItem.parent().find('.collapse').css('display','inline-block'); 
    thisItem.css('display','none'); 
    return false; 
}); 

$('.collapse').click(function(){ 
    var thisItem = $(this); 
    thisItem.parent().find('.comment').slideUp('fast'); 
    thisItem.css('display','none'); 
    thisItem.parent().find('.see_all').css('display','inline-block'); 
    return false; 
})"; 

當然,這也將涉及增加collapsesee_allcomment類相關的HTML元素。

+1

我還會避免手動調用JS的CSS規則。只需將一個像'expanded'這樣的類添加到父元素中,並且有一個像'.thread.expanded .collapse {display:none; } .thread.expanded .see-all {display:inline-block; }' – Eevee 2013-02-09 06:23:35

+0

幾乎可以工作,JLRishe,see_all和collapse類在點擊時交換的很好,但是當點擊它們各自的鏈接時,評論類不會上下滑動,有什麼想法? – 2013-02-09 06:36:04

+0

@BillChambers這可能是因爲包含註釋的父級比「see_all」和「collapse」的第一個父級更高。您能否提供一個單個帖子的HTML(包括展開/摺疊和評論)的例子嗎? – JLRishe 2013-02-09 06:38:38