2017-07-15 21 views
0

我試圖從具有小於4 TD內取出所有TRjQuery的 - 如果表TR有4 TD做一些

因此,例如,在這個表我想第二TR走開:

HTML

<table> 
    <tbdy> 
    <tr> 
     <td>1</td> 
     <td>2</td> 
     <td>3</td> 
     <td>4</td> 
    </tr> 
    <tr> 
     <td>1</td> 
     <td>2</td> 
     <td>3</td> 
    </tr> 
    </tbody> 
</table> 

我的東西想這樣

jQuery的

if ($('table tbody tr td').length >= 4) { 
    //4 i ok so do nothing 
} else { 
    $(this).parent("tr").remove(); 
} 

但我無法與此。 有什麼幫助嗎?

+0

您使用您發佈的實際代碼?因爲你的第一個tbody標籤拼寫錯誤。您需要將其從''更改爲'' – JonLuca

+0

我不是,僅供參考。我編輯了錯誤,感謝您注意:) – DearBee

回答

5

使用jQuery :has()選擇與:not():nth-child()僞類選擇。

$('tr:not(:has(:nth-child(4)))').remove()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tbody> 
 
    <tr> 
 
     <td>1</td> 
 
     <td>2</td> 
 
     <td>3</td> 
 
     <td>4</td> 
 
    </tr> 
 
    <tr> 
 
     <td>1</td> 
 
     <td>2</td> 
 
     <td>3</td> 
 
    </tr> 
 
    </tbody> 
 
</table>


或可替代地,可使用filter()方法濾除元件只包含大於4並取出少td

$('tr').filter(function() { 
 
    return $(this).children('td').length < 4; 
 
}).remove()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tbody> 
 
    <tr> 
 
     <td>1</td> 
 
     <td>2</td> 
 
     <td>3</td> 
 
     <td>4</td> 
 
    </tr> 
 
    <tr> 
 
     <td>1</td> 
 
     <td>2</td> 
 
     <td>3</td> 
 
    </tr> 
 
    </tbody> 
 
</table>

+1

這只是野生:)謝謝! – DearBee

+1

最好的答案。 +1 –

+0

@DearBee:很高興幫助你:)並感謝@Bob –

1

你的結構應該是:

<table> 
    <tbody> 
    <tr> 

而且你可以選擇它:

$('table tbody tr') 

要獲得所有TR小於4列,你應該通過他們循環。

你的最終代碼應該是:

$('table tbody tr').each(function() { 
    var row = $(this); 
    if (row.find('td').length < 4) { 
     row.remove(); 
    } 
}); 
3

這應該工作:

$('table tbody tr').each(function() { 
    var $tr = $(this); 
    if ($tr.find('> td').length < 4) { 
     $tr.remove(); 
    } 
}); 
+1

謝謝,那精美的工作 編輯:sry我得走了瘋狂的選擇器投票,我喜歡它:) – DearBee

+1

沒問題。 Pranav的解決方案遠比我的優雅。 – Quagaar