2014-10-09 59 views
0

HTML代码孩子:上()jQuery的不工作的一个div

<input type="text" name="subcat" class="subcat input1"/> 
<div class="input dispsubcat" id="dispsubcat"> 
    <div class="sub"> abc</div> 
    <div class="sub"> xyz</div> 
</div 

jQuery代码:

$(".input").children("div").on("click",function(){ //does not work 
    console.log("hello"); 
}) 

$(".sub").on("click",function(){ //also does not work 
    console.log("hi"); 
}) 

下面的代码工作这不是我想要的:

$(".input").on("click",function(){ console.log("ab");}) 
+1

正常工作=> http://jsfiddle.net/20gu1a4c/ – 2014-10-09 10:56:36

+2

那些是'divs'动态添加? – melancia 2014-10-09 10:56:41

+0

这个'$(“。sub”)。on(“click”..'应该可以正常工作 – 2014-10-09 10:57:10

回答

0

假设这些div元素是动态添加的,您需要将click事件委托给您的div个元件通过在"div"选择器传递作为jQuery的on()方法中的第二个参数:

$(".input").on("click", "div", function() { 
    ... 
}); 

jQuery's on() documentation

当提供一个选择器,该事件处理程序被称为委托。当事件直接发生在绑定元素上时,不会调用该处理程序,而只会为与选择器匹配的后代(内部元素)调用该处理程序。 jQuery将事件从事件目标引发到处理程序所附的元素(即,最内层到最外层的元素),并沿着匹配选择器的路径上的任何元素运行处理程序。

+1

,这是做的伎俩。谢谢! – 2014-10-09 11:02:50

+0

@DivyaBarsode高兴地帮助!:-) – 2014-10-09 11:10:08

0

包裹你的代码时,DOM是准备与jQuery 准备 API

$(document).ready(function(){ 
$(".input").children("div").on("click",function(){ //does not work 

    console.log("helo"); 

}) 

$(".sub").on("click",function(){ //also does not work 
    console.log("hi"); 
}) 

}); 
+0

没有工作 – 2014-10-09 11:02:18

+0

检查小提琴[这里](http://jsfiddle.net/hsr2sh52/)所有事件都是工作正常。 – Mayank 2014-10-09 11:06:58

+0

我动态地添加了这些孩子,这就是为什么它不工作 – 2014-10-09 11:09:39

相关问题