2014-09-29 60 views
0

JSFIDDLE DEMO當點擊時,tr應該顯示自己的擴展行

在Jsfiddle上它不能用作我的本地機器。

在本地機器上,唯一的一點是當點擊'高亮'時,它會一次顯示所有'多'行,這是不正確的。甚至試過'.next('more'),但它似乎沒有工作。

它應該是什麼:隱藏'更多'直到'突出顯示'行被點擊,然後展開它自己的'更多'行。如果單擊其他「高亮」行,則應關閉先前的展開行並顯示當前的展開行。

HTML

<table> 
<tbody> 
    <tr class="highlight"> 
    <td> 
Test 1 
    </td> 
    <td> 
     Test 2 
    </td> 
    <td>Test 3</td> 
    <td>Test4</td> 
    </tr> 
    <tr> 
    <td colspan="4" class="more" style="border-top:1px solid red"> 
     test test 

    </td> 
    </tr> 
     <tr class="highlight"> 
    <td> 
Test 1 
    </td> 
    <td> 
     Test 2 
    </td> 
    <td>Test 3</td> 
    <td>Test4</td> 
    </tr> 
    <tr> 
    <td colspan="4" class="more" style="border-top:1px solid red"> 
     test test 

    </td> 
    </tr> 


</tbody> 
</table> 

JQuery的

$(".highlight").each(function(e){ 

    $(this).click(function(e){ 

     if($('.more').hasClass('block')){ 
     $('.more').removeClass('block'); 
     alert('removed'); 
     } 
     else{ 
     $('.more').addClass('block'); 
     } 
    }); 
}); 

CSS

.more{display:none;} 
.block(display:block!important} 

幫助表示讚賞。

回答

0

首先,你需要在你的小提琴中包含jQuery。然後,你的CSS中有語法錯誤。

.block { 
    display: block !important; 
} 

Demo


這就是說,你的代碼很可能要簡單得多:

$(".highlight").click(function() { 
    $(this).next('tr.more').toggle(); 
    $('tr.more').not($(this).next()).hide(); 
}); 

Demo

請注意,我搬到了.more類行元件。

+0

非常感謝。對我的CSS部分。還有一件事 - colspan =「4」似乎不工作?因爲邊界的紅色應該跟隨父母排的長度。任何想法? – joe 2014-09-29 16:16:05

+0

它適用於Chrome。 – isherwood 2014-09-29 16:16:31

+0

對不起,但切換()不起作用,因爲我想它去。點擊突出顯示時,其更多行將展開。那麼如果我點擊下一個突出顯示,則前面的展開行應該關閉。 – joe 2014-09-29 16:19:32

相關問題