2016-12-04 50 views
1

我再次轉發我的問題。我在我的主頁中有一個for循環,循環顯示和隱藏按鈕(onclick函數)的結果列表。每當我點擊show()按鈕的時候,我所有的div.view都向下滑動,當我點擊hide()按鈕時,我所有的div.vew都會滑動到收集狀態。我想讓每個show()對應每個div.view標籤。對於我的糟糕英語感到抱歉,並且由於缺乏編碼經驗而再次轉載問題。希望有人能幫助我。非常感謝。Php爲每個功能事件的循環Onclick功能

隱藏 enter image description here

顯示 enter image description here

<?php 
    for($i = 0; $i < count($db); $i++) 
    { 
    <div class="view"> 
    <?php 
    echo $data["Description"]; 
    ?> 
    </div> 


    <div style="float:right; margin:0px 8px 0px 0px;"> 
    <div onClick="show()" style="cursor:pointer; font-size:12px; color:#8080FF; float:left;">Show&nbsp;<div style="color:#FFF; font-weight:bold; float:right;">/</div></div> 
    <div onClick="hide()" style="cursor:pointer; font-size:12px; color:#8080FF; float:right;">&nbsp;Hide</div> 
    </div> 

    } 
    ?> 

search.js

function show() 
    {  
    $('div.view').animate({height:160},500); 
    } 

    function hide() 
    { 
    $('div.view').animate({height:40},500); 
    } 

回答

0

如果我理解你的問題的權利,當你點擊一個鏈接時,你想單獨顯示/隱藏每個div。 爲了做到這一點,你必須傳遞一個參數來識別你想要工作的div。幸運的是,你的代碼中已經有了這樣的參數,它就是你循環的索引。喲可以將其添加到您的代碼,這樣

<div onClick="show(<?=$i?>)">show</div> 

然後,你必須改變你的jQuery函數使用參數

function show(index) 
{  
    $('div.view').eq(index).animate({height:160},500); 
} 

這樣,當你點擊一個鏈接,你將只顯示DIV由此鏈接引用。

但是,有一個更好的方法可以做到這一點。您不應該混合使用html和函數調用,而是將事件偵聽器添加到您的DOM元素。你也應該避免使用style屬性來設計你的元素,而應該使用CSS類。

+0

謝謝sebastien maloron我解決了一些故障排除後的問題。 – user3379528

0

幾個方法可以做到這一點。您可以在HTML改變你的「節目()」到「秀(本)」和你的JS代碼:

function show(obj) { 
    $(obj).parent().animate({height: 160}, 500); 
} 

或者,添加一個標識類的顯示和隱藏按鈕,然後在JS創建像這樣的事件:

$('.show').click(function() { 
    $(this).parent().animate({height: 160}, 500); 
}); 
+1

謝謝兄弟,對於你的回答它也有效,但上面的答案更適合我。謝謝 – user3379528