2016-08-12 39 views
2

您好,我需要一些使用jQuery隱藏父div的幫助。使用jQuery隱藏父div使用jQuery問題

這裏是我的html:

<div class="team-member"> 
    <div class="team-member-info"> 
     <h3 class="team-member-name">Ann</h3> 
    </div> 
</div> 

這裏是jQuery的我到目前爲止:

if ($('.team-member-info .team-member-name:contains("Ann")').length > 0) { 
     $(this).parent().hide(); 
    } 

基本上,我想實現的是,如果 「.team成員名」包含單詞「安」,擺脫整個股利,這是「隊成員」

jQuery的第一行工作正常,但第二行似乎並沒有工作。

在此先感謝!

+0

您需要向我們展示了全功能的,所以我們可以看到的'$範圍(本)',因爲它不是爲它分配 – Adjit

+0

那就是'if'聲明我的整個功能。我需要添加一些東西嗎? –

+0

在你顯示的代碼中,'this'不是指你想要隱藏的DOM對象。有關參考資料,請參閱MDN關於['this'關鍵字]的文檔(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this)。鑑於你的代碼,你處於「全局環境」。 – showdev

回答

3

你甚至不需要if-block在這裏。只要選擇和隱藏:

$('.team-member-info .team-member-name:contains("Ann")').closest('.team-member').hide() 

如果jQuery的沒有發現含有「安」裏面也不會隱瞞任何事情反正任何.team-member-name

另外請注意,因爲你想走兩個級別,你不能使用$.fn.parent(只有第一級祖先)。相反,您應該使用$.fn.parents$.fn.closest

+0

在這種情況下你不應該也可以使用'.parent()'? – Adjit

+0

它必須是'.parent()。parent()'來隱藏團隊成員元素 – APAD1

+0

@Adjit否,因爲在這種情況下,父項只需要直接父項,但不需要我們需要的宏項。 – dfsq

0

不要用複雜的jQuery選擇去(因爲多種原因),這樣做:

var $temp_team_member = $('.team-member-info .team-member-name'); 
if(/Ann/.test($temp_team_member.text())){ 
    $temp_team_member.parent().hide(); 
} 

在這裏,我們創建變量和追趕.team-member-info .team-member-name。如果它包含'Ann'作爲文本,您的操作是預先形成的。

編輯: 代碼樣本編輯套件「包含安」(不是是安)條款。

Working pen.

+0

不幸的是,這並沒有工作先生。 –

+0

雖然 –

+1

對您有所幫助,但它可能無法正常工作,因爲它假定文本僅包含確切單詞「Ann」的* only,而不是包含* Ann單詞的文本。 (即'==='安') – showdev

1

嘗試刪除如果 statment,因爲:contains()只能找到含Anndiv和意志隱藏div如果divAnn,所以沒有必要if語句在這裏。

這裏是工作片段

$(function(){ 
 
    $('.team-member-info .team-member-name:contains("Ann")').parent().parent().hide(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="team-member"> 
 
    <div class="team-member-info"> 
 
     <h3 class="team-member-name">Ann</h3> 
 
    </div> 
 
</div>

+0

是啊!你是對的 !這是隱藏'.team-member'的方法,但是你沒有在你的問題中提到這一點。任何方式我更新了我的答案:) –

+0

很高興它解決了你的問題:) –

+0

你的編輯工作完美。謝謝!我將此標記爲解決方案以及@dfsq的解決方案,因爲兩者都起作用。 –

0

什麼是$(本)指什麼?你的if語句是在函數內還是獨立的?因爲在此代碼中,$(this)不是指.team-member-info

+0

這是迄今爲止唯一一個試圖解釋問題的答案。 – showdev

+0

我只用了$,因爲這是我在其他人的解決方案中找到的。我對jQuery非常陌生 –

+0

@cup_of對你沒有任何判斷力;你問了一個很好的問題。我認爲除了任何備用解決方案外,解答問題的答案都很重要。所以,這個答案也很重要。 – showdev

0

.closest()已棄用,而.parent()僅向上移動一級。我建議做以下幾點:

$('.team-member-info .team-member-name:contains("Ann")').parents('div.team-member').hide(); 
+0

我相信''closest()'在接受'context'參數的功能中只折扣* *。見['.closest(選擇器[,上下文])'](https://api.jquery.com/closest/#closest2)。 – showdev