Jquery 下拉菜单,复用功能
Jquery drop down menu, reuse function
我正在尝试创建一些 jquery 的 onClick 下拉子菜单项。
我做了一些 Jquery 可以工作的,但它特定于元素,并且需要一遍又一遍地写一个大菜单。
有什么方法可以检测点击的元素,然后找到它的子元素并滑动切换到 show/hide。
参见小提琴:http://jsfiddle.net/c5tnje9x/
$("#sub1").click( function () {
$("#sub11").slideToggle(200);
});
$("#subTwo").click( function () {
$("#subThree").slideToggle(200);
});
和 HTML
<ul>
<li>Home</li>
<li>
<a href="#" id="sub1">first +</a>
<ul id="sub11" style="background: grey;display: none;">
<li>Sub1</li>
<li><a href="#" id="subTwo">sub1.1+</a>
<ul id="subThree" style="background: green;display: none;">
<li>Sub Three</li>
</ul>
</li>
</ul>
</li>
<li>seccond</li>
<li class="hasSub"><a href="#">Third +</a>
<ul style="background: green;display: none;">
<li>sub 2</li>
<li>sub 2.2</li>
</ul>
</li>
<ul>
<li>Sub 2</li>
</ul>
</ul>
你可以简单地给他们一个相同的 class dropdown
在 class 上使用单个 jquery 单击功能:
$(".dropdown").click( function () {
$(this).next('ul').slideToggle(200);
});
DEMO
试试这个
Javascript
$('#nav > li > ul').hide();
$('#nav > li > a').click(function(){
$(this).next('ul').slideToggle(200);
});
HTML
<ul id="nav">
<li>
<a href="#">main1+</a>
<ul>
<li>sub1</li>
<li>sub2</li>
</ul>
</li>
<li>
<a href="#">main2+</a>
<ul>
<li>sub1</li>
<li>sub2</li>
</ul>
</li>
<li>
<a href="#">main2+</a>
<ul>
<li>sub1</li>
<li>sub2</li>
</ul>
</li>
</ul>
几点 -
使用 classes 代替 ID。 类 可重复使用,ID 不可。
给你的 ul 一个 class 'foo',然后你可以这样做:
$('ul.foo > li a').on('click', function() {
$(this).next('ul').slideToggle(200);
);
这基本上就是说-点击顶部菜单,找到相应的ul并打开它。
但这只会打开下拉菜单,不会关闭其他菜单。你没有明确说明你在做什么,所以我没有在这里解决这个问题。
这里列出了一个简单的方法:http://toddmotto.com/html5-and-jquery-super-simple-drop-down-nav/
我正在尝试创建一些 jquery 的 onClick 下拉子菜单项。
我做了一些 Jquery 可以工作的,但它特定于元素,并且需要一遍又一遍地写一个大菜单。
有什么方法可以检测点击的元素,然后找到它的子元素并滑动切换到 show/hide。
参见小提琴:http://jsfiddle.net/c5tnje9x/
$("#sub1").click( function () {
$("#sub11").slideToggle(200);
});
$("#subTwo").click( function () {
$("#subThree").slideToggle(200);
});
和 HTML
<ul>
<li>Home</li>
<li>
<a href="#" id="sub1">first +</a>
<ul id="sub11" style="background: grey;display: none;">
<li>Sub1</li>
<li><a href="#" id="subTwo">sub1.1+</a>
<ul id="subThree" style="background: green;display: none;">
<li>Sub Three</li>
</ul>
</li>
</ul>
</li>
<li>seccond</li>
<li class="hasSub"><a href="#">Third +</a>
<ul style="background: green;display: none;">
<li>sub 2</li>
<li>sub 2.2</li>
</ul>
</li>
<ul>
<li>Sub 2</li>
</ul>
</ul>
你可以简单地给他们一个相同的 class dropdown
在 class 上使用单个 jquery 单击功能:
$(".dropdown").click( function () {
$(this).next('ul').slideToggle(200);
});
DEMO
试试这个
Javascript
$('#nav > li > ul').hide();
$('#nav > li > a').click(function(){
$(this).next('ul').slideToggle(200);
});
HTML
<ul id="nav">
<li>
<a href="#">main1+</a>
<ul>
<li>sub1</li>
<li>sub2</li>
</ul>
</li>
<li>
<a href="#">main2+</a>
<ul>
<li>sub1</li>
<li>sub2</li>
</ul>
</li>
<li>
<a href="#">main2+</a>
<ul>
<li>sub1</li>
<li>sub2</li>
</ul>
</li>
</ul>
几点 -
使用 classes 代替 ID。 类 可重复使用,ID 不可。
给你的 ul 一个 class 'foo',然后你可以这样做:
$('ul.foo > li a').on('click', function() {
$(this).next('ul').slideToggle(200);
);
这基本上就是说-点击顶部菜单,找到相应的ul并打开它。
但这只会打开下拉菜单,不会关闭其他菜单。你没有明确说明你在做什么,所以我没有在这里解决这个问题。
这里列出了一个简单的方法:http://toddmotto.com/html5-and-jquery-super-simple-drop-down-nav/