我有以下HTML代码:
<div class="dim">
Menu
<div class='hidden'>submenu1</div>
<div class='hidden'>submenu2</div>
</div>
<div class="dim">
Menu2
<div class='hidden'>submenu3</div>
<div class='hidden'>submenu4</div>
</div>
班级hidden
有display:none
当我点击单词菜单或menu2
时,我正试图让切换工作答案 0 :(得分:10)
$('.dim').click(function(){
$('.hidden', this).toggle(); // p00f
});
小提琴:http://jsfiddle.net/maniator/V4X4t/
检查点击的dim
元素:
$('.dim').click(function(event){
var isDim = $(event.target).is('.dim');
if(isDim){ //make sure I am a dim element
$('.hidden', this).toggle(); // p00f
}
});
答案 1 :(得分:3)
$('.dim').on('click', function () {
//$(this).children('.hidden').toggleClass('.hidden');//as-per AndreasAL's suggestion
$(this).children('.hidden').toggle();
});
$('.hidden').on('click', function (event) {
event.stopPropagation();
});
以下是演示:http://jsfiddle.net/76uTr/
这会在点击.hidden
元素时显示/隐藏.dim
元素,但它也允许您点击.hidden
元素,而不是切换它的可见性。
请注意,我使用的是.children()
而不是.find()
,它只会选择根元素的直接后代(.dim
)。
另请注意,.on()
是jQuery 1.7中的新功能,在这种情况下与.bind()
相同。
<强>更新强>
使用event.stopPropagation()
我们可以允许自己嵌套元素,不要让事件冒泡并触发多个事件处理程序:
$('.dim').on('click', function (event) {
event.stopPropagation();
$(this).children('.hidden').toggle();
});
$('.parent').on('click', function () {
$(this).children('.dim').toggle();
});
$('.hidden').on('click', function (event) {
event.stopPropagation();
});
以下是演示:http://jsfiddle.net/76uTr/1/
此处假设.parent
元素是.dim
元素的直接父元素。
答案 2 :(得分:1)
只需附加一个click事件处理程序,并检查当前元素是否是被单击的元素:
$('.dim').click(function(e)
{
if (e.target == this)
{
$(this).children().toggle();
}
});
这里是小提琴:http://jsfiddle.net/V4X4t/6/
答案 3 :(得分:0)
看一下可能会给你一个想法的this教程
答案 4 :(得分:0)
在Menu和Menu2
创建锚点<div class="dim">
<a href="#" >Menu</a>
<div class='hidden'>submenu1</div>
<div class='hidden'>submenu2</div>
</div>
<div class="dim">
<a href="#" >Menu2</a>
<div class='hidden'>submenu3</div>
<div class='hidden'>submenu4</div>
</div>
和脚本:
$(".dim > a").click( function ( e ){
e.preventDefault() // prevent default action - hash doesn't appear in url
$( this ).parent().find( "div" ).toggleClass( "hidden" );
});
当点击任何属于它的链接子菜单时,将显示或消失