[英]How do you select multiple elements for a javascript click event to be captured on?
我有這個HTML:
<div id="outsideContainer">
<ul>
<li>Hello</li>
<li>Goodbye</li>
</ul>
</div>
使用jQuery,我怎么說呢?當單擊其中任何一個元素時,執行某個功能?
我有這個,但是沒有用:
$('#outsideContainer').click(function() {
//do stuff
});
有任何想法嗎?
在大多數情況下都可以。 無效的可能原因:
您正在執行“ outsideContainer”元素之前的JavaScript,例如:
... <script> $('#outsideContainer').click(function() { //do stuff }); </script> <div id="outsideContainer"> <ul> <li>Hello</li> <li>Goodbye</li> </ul> </div>
從調用腳本開始,該元素必須存在。 您可以將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 });
請注意,如果您在ul
但未在li
上單擊,則取決於您的邊距和填充, event.target
可能是ul
元素。
其他可能值得一看的東西:
僅當您單擊整個div時才會觸發。
$('#outsideContainer').click(function() {
//do stuff
});
要捕捉點擊每一個人li
做:
$('#outsideContainer ul li').click(function() {
//do stuff
});
正如TJ克勞德指出,你有什么作品,但是你會想知道的情況下的this
。 將event.target
替換為this
將為您提供被單擊的實際元素。
作為演示,我在小提琴下方添加了一個小提琴,該提琴將警告所單擊元素的節點(標簽)類型和文本內容。 <div>
, <ul>
和<li>
都有不同的彩色邊框,以幫助您直觀地確定實際單擊的內容。
$('outsideContainer ul li').click(function() {
//stuff
});
我沒有包括實際上導致問題的javascript(它在//do stuff
,但是我遇到的問題是我正在尋找event.target只是outsideContainer而不是ul
和li
s。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.