2017-05-10 24 views
0

假設我有這樣的代碼:jQuery的過濾器使用CSS類/子類

<div class="notes"> 
    <div class="note"> 
     <div class="inner-content like"></div> 
    </div> 
    <div class="note"> 
     <div class="inner-content unlike"></div> 
    </div> 
    <div class="note"> 
     <div class="inner-content unlike"></div> 
    </div> 
</div> 

我要的是filter等,以及不同子類。

我想這個代碼,但沒有運氣:

$("div.notes").filter(".note.note-inner>.like").hide(); 

有像子類沒有隱藏的股利。

UPDATE


我想隱藏與.note類不是一個與.inner-note like的元素。

+0

@SpencerWieczorek是的,你說得對,我讀錯。 –

+0

請檢查我的更新。這些'note'是使用模型中的循環動態創建的。 –

回答

3

你沒有一個.note-inner,你的選擇是錯誤的。 .note.note-inner將是一個class="note note-inner"元素。而.notes只有1元,所以$.filter()不會找到任何其他元素或兒童.notes

我認爲你的意思$("div.notes").find(".note > .like").hide();但你也可以只是做$('div.notes > .note > .like').hide()有或沒​​有直接派生選擇 - 他們不是活得您需要分享您的標記。

如果你想刪除.note如果它有一個.like作爲孩子,請使用$("div.notes").find(".like").closest('.note').hide();。這將在.notes中找到.like,然後找到類.note的最近祖先並隱藏它。

$("div.notes").find(".like").closest('.note').hide();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="notes"> 
 
    <div class="note"> 
 
     <div class="inner-content unlike">unlike</div> 
 
    </div> 
 
    <div class="note"> 
 
     <div class="inner-content like">like</div> 
 
    </div> 
 
    <div class="note"> 
 
     <div class="inner-content unlike">unlike</div> 
 
    </div> 
 
    <div class="note"> 
 
     <div class="inner-content unlike">unlike</div> 
 
    </div> 
 
</div>

+0

這個工程,但我注意到,它留下了過濾內容之間的空間。我可以刪除它而不是隱藏嗎? –

+0

@ChristianMark你是指過濾內容之間的空間是什麼? https://開頭codepen。io/anon/pen/qmxREE –

+0

假設每個音符都有一個固定大小,我需要用類似的過濾器來過濾這個元素,這個元素現在隱藏了,但是相對於我設置的大小留下了一個固定的空間。 –

0

你可以試試這個

$(".note > .inner-content.like").hide(); 

$(".note > .inner-content.like").show(); 

$(".note > .inner-content.unlike").hide(); 

$(".note > .inner-content.unlike").show(); 

我創建了一個的jsfiddle顯示與按鍵過濾器切換https://jsfiddle.net/jmbm2myu/3/

0

.filter()適用於你要過濾的元素,因此你想將它應用到<div class="inner-content .."></div>元素:

$("div.notes > .note > .inner-content").filter(".like").hide(); 

或者乾脆

$("div.notes > .note > .inner-content.like").hide(); 

爲了去除.note元素你可以得到父:

$("div.notes > .note > .inner-content.like").parent(".note").hide();