2014-10-09 64 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