2013-01-16 57 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);