2016-04-26 50 views
0

嘗試toggleClass使用jQuery最近的#dropdown元素,我似乎無法找到ul。 jQuery加載正常,每個元素都確認點擊。jQuery的onclick切換最近的UL

HTML代碼:

<li onclick="showDropDown()" class="filter-button"> 
          Filter by <strong>Aread</strong> + 
    <ul id="dropdown" class="dropdown-content"> 
     <li><a href="">Test 1</a></li> 
     <li><a href="">Test 3</a></li> 
     <li><a href="">Test 2</a></li> 
    </ul> 
</li> 

jQuery代碼是:

function showDropDown() { 
    jQuery(this).parents("li").find("ul").toggleClass('show'); 
    } 
+1

不需要'。家長( 「禮」)'點擊事件在裏面你已經只需要找到裏面的ul。 – guradio

+0

嘗試使用jQuery(this).children而不是父母。 –

+0

我認爲你的代碼不完整,試圖做一個小提琴或解釋更好,你正在尋找$(this).parents,但在你的HTML沒有李#UL下拉的父母 – Pietro

回答

1

dropdown UL是filter-button裏的子元素。所以你不需要在這裏找到父

$(".filter-button").click(function() { 
    $(this).find("ul").toggleClass('show'); 
}); 

OR,

如果你確實需要使用內聯方法調用,然後你需要傳遞當前對象以及,

<li onclick="showDropDown(this)" class="filter-button"> 

代碼,

function showDropDown(obj) { 
    jQuery(obj).find("ul").toggleClass('show'); 
} 
+0

你確定'這'?在標記的小修改將會做.. – Rayon

+0

現在它的罰款嗎? –

+1

是的.. _完美!_我即將建議相同:) – Rayon

0

如果有許多UL元素作爲child和nextSibling,則必須按如下方式編寫。

演示:https://jsfiddle.net/nigayo/Lo3yf31y/1/

[JavaScript的]

 $(".filter-button").click(function() { 
     $(this).find("ul:first").toggleClass('show'); 
     $(this).next("ul:first").toggleClass('show'); 
     }); 

[HTML]

<li class="filter-button"> 
    Filter by <strong>Aread</strong> + 
    <ul id="dropdown" class="dropdown-content"> 
     <li><a href="">Test 2</a></li> 
    </ul> 

    <ul id="dropdown2" class="dropdown-content"> 
     <li><a href="">Test 2</a></li> 
    </ul> 
    </li> 

    <ul id="dropdown_next" class="dropdown-content"> 
     <li><a href="">Test 2</a></li> 
    </ul> 
    <ul id="dropdown_next2" class="dropdown-content"> 
    <li><a href="">Test 2</a></li> 
    </ul> 
1

你失蹤this對象在method通話。

請參閱演示here

請找到下面的代碼:

HTML:

<ul> 
    <li onclick="showDropDown(this)" class="filter-button"> 
    Filter by <strong>Aread</strong> + 
    <ul id="dropdown" class="dropdown-content"> 
     <li><a href="">Test 1</a></li> 
     <li><a href="">Test 3</a></li> 
     <li><a href="">Test 2</a></li> 
    </ul> 
    </li> 
</ul> 

JS:

function showDropDown(obj) { 
    $(obj).find("ul").toggle(); 
}