2013-01-05 33 views
0

我有一个大的矩形父div,里面有很多子div。我有一个on(click)函数,它在父div被点击时运行,但是默认情况下,它也会在父div中的任何内容被点击时运行(包括子项)。jQuery - on()函数当一个div被点击时,但不是当该div的孩子被点击时

但是,我不希望on(click)函数在单击父项的一个特定子项时运行。我该如何做一个选择器,选择父div以及除了这个孩子之外的所有东西?

感谢

<div class="box""> 

<div class="overlay"><div id="text"></div></div> 
<div class="slide"> 
    <div class="slideleft"></div> 
    <div class="slideright"> 
     <span class="upvote">Upvote</span> 
     <span class="counter"></span> 
    </div> 
</div> 

</div> 

现在,这一切中的“盒子”的div,你可以看到发生了什么here演示。如果您在点击一个盒子后点击了upvote按钮,那么这个东西就会滑回去,我不希望它。这是我想现在就用这个​​代码,但它不工作:

$("body").on("click", ".box", function(e){ 
     if(e.target.class == 'upvote') { 
      return false; 
     } else { 
       $(this).children('.slide').slideToggle(150); 
       $(this).children('overlay').css('background-color', 'rgba(0,0,0,0)'); 
      } 
}); 
+2

考虑在这里发布你的代码,它很si然后mpler帮你​​。但对于你的问题,看看:不是选择器... – jtheman

回答

3

Working Fiddle

$("body").on("click", ".box", function (e) { 
if (e.target.className != 'upvote') { 
    $(this).children('.slide').slideToggle(150); 
    $(this).children('.overlay').css('background-color', 'rgba(0,0,0,0)'); 
} 
}); 
+0

谢谢,你的小提琴正是我正在寻找!然而,它似乎并没有在我的代码上工作(添加到OP),你介意看看它吗?谢谢 – Taimur

+1

@Taurur看到我编辑的答案! –

+0

非凡,谢谢! – Taimur

1

你可以做这样的:

$('.child').on('click', function(e){ 
    e.stopPropagation(); 
}); 

Demo

+0

为什么绑定第二个处理程序只是为了防止它? – Mathletics

+0

替代上一个答案。 – Sparkup

相关问题