2013-09-26 33 views
2

我有一個動態加載鏈接的div設置。如果爲1或更少,則計數並隱藏鏈接。 Jquery

<div class="module"> 
    <a href="#" class="sidelink"> 
    <a href="#" class="sidelink"> 
</div> 

我如何設置此所以,如果自己在這個div 1鏈路或更小,可以隱藏所有的(在這種情況下,1)鏈接。尋找一個簡單的jQuery解決方案/

+0

恰恰,如果它只是1個鏈接隱藏鏈接的權利?因爲沒有任何可以隱藏的東西,所以沒有什麼區別。 – PSL

回答

1
if ($('.sidelink').length === 1) { 
    $('.module').hide(); 
} 
4

假設你有很多這樣的部分,你可以這樣做:

$('.module:not(:has("a:nth-of-type(2)"))').hide(); 

Fiddle

  • nth-of-type
  • not
  • has

  • .module - 選擇所有模塊元件

  • 一個:第n的式(2) - 如果你有更多的是1錨
  • 具有2即索引選擇任何錨看到一個has選擇器,它現在結合了2個exprs以選擇具有2個或更多anchor的模塊,但是保留
  • a不包含上述2的選擇器確保它選擇不滿足上述條件的模塊。

中序隱藏模塊,嘗試:

$('.module:not(:has(a:gt(0)))').find('a').hide(); 

Fiddle

或只是

$('.module a').filter(function(){ 
    return $(this).siblings('a').length == 0; 
}).hide(); 
+2

美麗的選擇器。 –

+1

不錯。由於OP提到隱藏鏈接,而不是整個div,你可以做'$('。module:not(:has(「a:nth-​​of-type(2)」))a')。hide(); ' – andi

+0

@andi我錯過了那部分..謝謝:) – PSL

3

toggle()基於一個布爾值會隱藏/顯示,檢查是否有更多的比一個錨會評估爲真或假:

$('.module a').toggle($('.module a').length > 1); 

並關閉錨。

+0

好方法也。 –

+0

@PSL - 這很好,OP聲明**「我有一個div」**,只要沒有更多的div,它的效果很好。 – adeneo

+0

@adeneo哦好吧,在這種情況下,我的答案是一個矯枉過正的,可能...因此,收回我的評論... – PSL