2012-06-27 49 views
1

所以我有一個頁面設置,可以讓你在點擊花費文本框的所有元素:綁定單擊處理程序除了那些有一定的HTML標籤的

http://hashtag.ly/#NASCAR

它增加了一個「主動」類經元素點擊並刪除它,如果你點擊另一個文本框。現在,如果您點擊紅色背景,我想要移除該課程。我還希望在短時間內向頁面添加元素,因此重要的是,此刪除操作僅來自點擊紅色部分,即<body>元素。

所以這裏就是我在頁面上現在:(注意日誌將被清除類來代替)

$('*:not(li)').click(function(){ 
    console.log('foo') 
}); 

的問題是它記錄「富」無處不在,你點擊,甚至直接在文本框是li元素。我怎樣才能使這項工作只需點擊背景?

謝謝!

+0

不要使用'警報()'進行測試。沒有Chrome和Opera的人會在他們一個一個拿到100個盒子時發瘋...... – Blender

+0

我會將其更改爲console.log – alt

+0

@Blender,如果有人試圖在Windows Internet Explorer中執行'console.log()' ,他們會得到腳本錯誤,你知道嗎? –

回答

2

你的問題是,你正在冒泡HTML堆棧。通過將處理程序放在的一切上,即使您點擊LI,該事件也會冒泡到UL。同樣,$('body')會引起冒泡問題。

你最好在你的主棧之外創建一個div來處理這個問題。想象一下絕大部分頁面背後的div。

如果你真的想一切火,除了李,你的代碼需要看起來更像是這樣的:

$('*:not(li)').click(function(){ 
// do something. 
}); 
$('li').click(function(evt){ 
// do something else. 
    evt.stopPropagation(); 
}); 
+0

我想我會按照第二段所描述的去做。 – alt

+0

作品,非常感謝! – alt

相關問題