你在哪里做连接?如果它位于实际“容器”div
上方的script
标签中,并且您没有将其包装在某种ready
回调或类似内容中,则可能是问题所在。或者,如果您之后将孩子添加到了div中(因为您使用的是click
,因此只会将处理程序与那里的孩子挂钩)。
因为如果 “容器” div
及其子已经存在,你的代码工作:
HTML:
<div id='container'>
<div>Child 1</div>
<div>Child 2</div>
<div>Child 3</div>
</div>
<input type='button' id='btnAdd' value='Add a new child'>
的JavaScript:
$('#btnAdd').click(function() {
$("#container").append("<div>New child, clicking me <em>won't</em> work</div>");
});
$('#container').children().click(function(){
divClicked($(this));
});
function divClicked(selectedDiv)
{
// You don't want `$` here, but I've left it just to demonstrate
// that your code should, largely, be working
$(selectedDiv).css('background', 'red');
}
Live copy
..但请注意,此后添加的元素为不要工作,因为当你把事情搞砸时,他们不在那里。
解决它将取决于什么是错的。它可能只是将您的连接代码包装到ready
处理程序中(如我在该示例中那样)或将其移动到页面底部的script
标记中编码,即在关闭</body>
标记(如YUI folks recommend)之前,或者可能使用live
或delegate
。
我想你想使用'委托',如果我正确地理解你的问题。目前'this' does not *参考'#容器' – zzzzBov 2011-03-09 18:12:18
zzzzBov:'this'指的是点击的div ...我认为他明白了吗? – 2011-03-09 18:16:23
你可以发布你的代码吗?我可以[让这个工作](http://jsfiddle.net/8pgBv/)与我有的设置。 – justkt 2011-03-09 18:17:29