2013-01-16 61 views
0

我試圖讓一個類在點擊時調用一個函數,但它不起作用。找不到合適的選擇器

$('.container_vragen').click(appendContainerVragenToContent_vragen); 

與此代碼的函數被調用,但我想打電話給行動.container_vragen只有當它在div #geregeld

$('.container_vragen' , '#geregeld').click(appendContainerVragenToContent_vragen); 

當我定義.container_vragen裏面#geregeld不調用函數appendContainerVragenToContent_vragen

什麼是正確的選擇器?

+0

定義「它不起作用」。 –

+0

通話後DOM是否改變? –

+0

使用第二個代碼,它不會調用該函數。 –

回答

1

簡單的解決方法是使用選擇的權力:

$('#geregeld .container_vragen').click(appendContainerVragenToContent_vragen); 

但是請注意,這不會在你打電話後DOM發生變化時工作。如果您想允許,請使用

$(document.body).on('click', '#geregeld .container_vragen', appendContainerVragenToContent_vragen); 
+0

你能否解釋爲什麼如果DOM(這是'.container_vragen'類的權利?)發生變化,它將無法工作?無論如何,你的代碼確實有用,但我想知道有什麼不同。 –

+0

假設你在沒有任何''#geregeld .container_vragen''元素時調用第一行。然後,jQuery集合是空的,'click'什麼都不做。第二種形式,使用'on',每次單擊時測試選擇器,而不只是當您最初調用綁定函數'on'時。 –

+0

優秀的解釋!非常感謝。這個簡單的代碼讓我瘋狂。 –

1

您正通過string而不是DOM對象在上下文中,找到更多關於選擇器和上下文here

更改爲

$('.container_vragen' , $('#geregeld')).click(appendContainerVragenToContent_vragen); 

或使用descendant selector

$('#geregeld .container_vragen').click(appendContainerVragenToContent_vragen);