2016-01-06 132 views
-1

我在班級內選擇班級有問題。看起來元素(s)不想顯示。我已經嘗試了多種方法,包括.find()和一個簡單的(「.outer .inner」)選擇,但對我而言都不起作用。在班級內選擇班級

下面是簡單格式的代碼,希望能夠澄清問題。

https://jsfiddle.net/ruo92tuc/

HTML

<a href="#" class="section01">Section 1</a> 

<a href="#" class="sub1">Sub menu 1</a> 

<a href="#" class="sub2">Sub menu 2</a> 
<a href="#" class="sub2">Sub menu 2</a> 
<a href="#" class="sub2">Sub menu 2</a> 
<a href="#" class="sub2">Sub menu 2</a> 

<a href="#" class="sub1">Sub menu 1</a> 
<a href="#" class="sub1">Sub menu 1</a> 
<a href="#" class="sub1">Sub menu 1</a> 
<a href="#" class="sub1">Sub menu 1</a> 

JQUERY

$(".sub1").hide(); 
$(".sub2").hide(); 

$(".section01").click(function() { 
    $('.section01').find(".sub1").show(); 
}); 
+10

這些元素不是嵌套的,所以'find'將永遠不會找到它們作爲後代元素。重新組織你的HTML。使用'LIs'嵌套'ULs'是做菜單/子菜單的好方法:) –

+0

或者使用'$('。section01〜.sub1')''在'.section01'之後獲得所有'.sub1'兄弟如果嵌套是不適當。 – Quantastical

+0

@Quantastical:這是一個菜單子菜單。如果嵌套不是一個好主意,我會很驚訝。否則,你需要另一種方法來確定菜單層次:) –

回答

-1

我更新您的提琴:https://jsfiddle.net/ruo92tuc/3/

$(".section01").click(function() { 
    $(document).find(".sub1").show(); 
}); 

,如果你想使用你的javascript函數就像你寫的那樣,你需要將html元素嵌套在對方內。

<div class="1"> 
    <div class="1.1"></div> 
    <div class="1.1"></div> 
</div> 
<div class="2"> 
    <div class="2.1"></div> 
    <div class="2.1"></div> 
</div> 

和JS:

$(".1").click(function() { 
    $(this).find(".1.1").show(); 
}); 

發生的事情是,你的jQuery類選擇,選擇所有具有給定類中的HTML元素。如果選擇$(document).find(".test"),則將返回文檔內部具有類test的所有html元素。如果你這樣做$('.test').find(".test2")將會返回所有帶有test類的HTML元素中test2類的html元素。

進一步的信息:https://api.jquery.com/category/selectors/

的問候和新年快樂;)

+0

功能,但打敗了預期的目的(菜單子菜單)。 HTML/DOM需要重新構建才能正確執行此操作。 –

+0

我的最終答案處理此問題 – messerbill

+0

您的回答是正確的,並且符合問題的要求。但是,需要澄清。或者他會考慮在第2小節中重複使用它。但是,如果他點擊sub1,則此解決方案將打開全部小節2。 FE。我應該建議他重新構建DOM以便於管理和未來證明。 – KarelG

0

根據您的問題,你需要的是用siblings,不findfind做的是搜索全部該元素的子項。 children搜索立即選擇器的子元素。所以,如果我們保留相同的HTML,

<a href="#" class="section01">Section 1</a> 

<a href="#" class="sub1">Sub menu 1</a> 

<a href="#" class="sub2">Sub menu 2</a> 
<a href="#" class="sub2">Sub menu 2</a> 
<a href="#" class="sub2">Sub menu 2</a> 
<a href="#" class="sub2">Sub menu 2</a> 

<a href="#" class="sub1">Sub menu 1</a> 
<a href="#" class="sub1">Sub menu 1</a> 
<a href="#" class="sub1">Sub menu 1</a> 
<a href="#" class="sub1">Sub menu 1</a> 

$('.section01').click(function(e) { 
    $(this).siblings('.sub1').show(); 
}); 
+0

第一行問題「選擇班級內的班級」表示這裏存在更深層次的問題:) –

+0

確實如此,但保持與他代表的問題相同的HTML結構。也許他的措辭不正確? –

+0

在我的經驗'菜單+子菜單=嵌套',但任何事情可能是這裏的情況:) –