我想做一個簡單的插件,所以當用戶點擊照片時,他會得到一張更大的照片(因爲所有的照片都比真實的小)。而我的問題是,當用戶點擊body
或html
時,如何關閉這張較大的照片,但如果在照片上點擊它,它不應該關閉它?它大概應該是這樣的:獲取ID或點擊對象的類別
$('body, html').click(function() {
if(clickedOnPhoto)
//do nothing
else
//close the photo
})
我想做一個簡單的插件,所以當用戶點擊照片時,他會得到一張更大的照片(因爲所有的照片都比真實的小)。而我的問題是,當用戶點擊body
或html
時,如何關閉這張較大的照片,但如果在照片上點擊它,它不應該關閉它?它大概應該是這樣的:獲取ID或點擊對象的類別
$('body, html').click(function() {
if(clickedOnPhoto)
//do nothing
else
//close the photo
})
而不是檢查什麼的目標是和決定做什麼;你可以添加一個click
事件處理程序document
元素關閉大照片和添加click
事件處理程序到大的照片,停止click
事件的傳播,因此不會達到document
元素:
$('#photo-container').on('click', '.big-photo-elements', function (event) {
//stop the event from propagating normally so that it does not reach the `document` element
event.stopPropagation();
});
$(document).on('click', function() {
//run code to close big photos, this will not be triggered if a user clicks on the big photo
$('.big-photo-elements').hide();
});
+1我認爲'stopPropagation'方法是更好的選擇。簡單和低維護。 – 2011-12-23 22:07:52
@Jasper:其實我更喜歡這種方法。你能解釋一下我寫的東西嗎?不管怎麼說,還是要謝謝你。聖誕節快樂。 – 2011-12-23 22:19:50
的event.target會給你被點擊的葉最元素。你可以把它包裝成$()
執行任何類/屬性檢查你通過jQuery
嘗試這樣的:
$(document).click(function(e){
var id = e.target.id; // get the id attribute of the target of the click
if(id === 'yourDivId') {
// photo was clicked
} else {
// something else was clicked
}
});
@ amnotiam:他希望獲得點擊目標的id,並在調整大小之前檢查它是否是放大的圖像。 – Purag 2011-12-23 21:56:56