2013-05-12 91 views
0

您使用什麼選擇器來引用on函數中的孩子?示例如下。

$("#parent").on("click", $(this).find(".child"), function() { 
    console.log($(this)); 
}); 

在控制檯中引用的$(this)是父級。我如何選擇孩子?注意:在父母下面的很多孩子,我只想得到$(this)作爲孩子被點擊。

+4

BTW,第二個參數'on'應該是一種選擇,而不是一個jQuery目的。 – SLaks 2013-05-12 14:59:09

+0

.child不是#parent的直接子,所以我選擇了一個選擇器。如果我將它綁定到.child的直接父項,$(this)會引用child而不是父項? – 2013-05-12 15:27:19

回答

1

正確的方法是:

$("#parent").on("click", ".child", function() { 
    console.log($(this)) // this here refers to '.child' being clicked. 
}); 

.on() API Documentation

選擇

類型:String

選擇器串來過濾所選擇的元件的後代 這將ca處理程序。如果選擇器爲空或省略,則在處理器到達選定元素時總是調用該處理器。

+0

你只給他看正確的語法,但沒有回答他的問題。 – vher2 2013-05-12 15:09:16

+2

@ vher2使用正確的語法,他的問題的答案是顯而易見的。它也在代碼中的評論中。 – Alnitak 2013-05-12 15:13:19

+0

@Alnitak是的,我認爲你是對的,也許我只是忽略它。 – vher2 2013-05-12 15:23:25

0

代替父節點上註冊的處理程序,可以將其對孩子登記,以及:

$("#parent").children(".child").on("click", function() { 
    // fires when any child of #parent is clicked; $(this) will be the child node clicked 
}); 
+0

我懷疑OP有一個很好的理由來使用'.on(type,child,handler)'。這兩個不相同。 – Alnitak 2013-05-12 15:12:25

+0

我想他想要一個特定的孩子(因此'.child'選擇符與'.find()')一起使用,而不是每個「父母下的許多孩子」。 – ajp15243 2013-05-12 15:12:34

+0

@ ajp15243可能。儘管'.children()'也可以作爲參數提供選擇器來過濾節點的子節點。 – Lukas 2013-05-12 16:12:54

相關問題