我有这样的HTML:如何选择多个元素来捕捉JavaScript单击事件?
<div id="outsideContainer">
<ul>
<li>Hello</li>
<li>Goodbye</li>
</ul>
</div>
使用jQuery我怎么会说,当任何这些元素被点击执行一定的功能?
我有这个,但没有奏效:
$('#outsideContainer').click(function() {
//do stuff
});
任何想法?
我有这样的HTML:如何选择多个元素来捕捉JavaScript单击事件?
<div id="outsideContainer">
<ul>
<li>Hello</li>
<li>Goodbye</li>
</ul>
</div>
使用jQuery我怎么会说,当任何这些元素被点击执行一定的功能?
我有这个,但没有奏效:
$('#outsideContainer').click(function() {
//do stuff
});
任何想法?
我不包括实际上导致的问题(这是在//do stuff
的JavaScript,但我是有我一直在寻找的event.target是问题只是outsideContainer代替ul
和li
小号
大多数情况下没问题。可能的原因是行不通:
你执行你的JavaScript中的“outsideContainer”元素存在之前,例如:
的元素必须存在的,当脚本调用的。您可以将script
区块放在页面的最后,就在关闭body
标签之前,或者将代码包装到您传递给jQuery的ready
函数的函数中。
您期待着您的回调中的this
指向li
元素;实际上,它会引用“outsideContainer”div
,因为这就是事件处理程序所关注的内容。您可以通过event.target
在li
元素得到:
$('#outsideContainer').click(function() {
// here, this is the raw "outsideContainer" element
// and event.target is the raw element that was clicked
});
请注意,根据您的边距和填充,event.target
可能是ul
元素,如果你的ul
内,但不是在li
点击。
其他的东西,可能是值得考虑的:
感谢,间接帮助我,因为我正在寻找的event.target只是'outsideContainer'而不是'ul'和''的 – chromedude 2011-06-15 19:08:02
@chromedude:LOL!我没有考虑过这种情况。你可能想看看我添加的链接,尽管听起来像你现在在那里。 – 2011-06-15 19:11:04
这只会在点击整个div时触发。
$('#outsideContainer').click(function() {
//do stuff
});
要捕捉点击每一个人li
做:
$('#outsideContainer ul li').click(function() {
//do stuff
});
正如T.J.注意克劳德,你有什么作品,但你会想知道this
的背景。用event.target
代替this
会给你点击的实际元素。
作为演示,我在下面提供了一个小提示,它将提醒点击元素的节点(标签)类型和文本内容。 <div>
,<ul>
和<li>
都具有不同的彩色边框,以帮助您直观地确定您实际点击的内容。
$('outsideContainer ul li').click(function() {
//stuff
});
这应该很好地工作......看到这个小提琴:http://jsfiddle.net/interdream/jUysR/ – 2011-06-15 19:02:33
没什么错在这里,你是什么意思你的问题的标题是复杂的: ? – Synxmax 2011-06-15 19:07:24
只是想出了什么是错的...我正在寻找event.target只是'outsideContainer'而不是'ul'和'li's – chromedude 2011-06-15 19:08:58