2013-10-21 83 views
-1

我有多個具有相同類的div元素。我試圖將一個單獨的事件綁定到每個事件。JQuery:將點擊事件綁定到不可點擊的HTML元素

<div class="tile">Tile1</div> 
<div class="tile">Tile2</div> 
<div class="tile">Tile3</div> 
... 

$(".tile").click(this.handleClick); 

var handleClick = function() { 
    console.log("inside handle click"); 
}; 

當前,點擊事件不會觸發,也不會發生任何事情。如果我將點擊事件綁定到窗口而不是像下面的「.tile」,那麼點擊事件會非常好地啓動。

$(window).click(this.handleClick); 

任何想法爲什麼我的問題是?

回答

0

this不像您期望的那樣工作。嘗試

function handleClick() { 
    console.log("inside handle click"); 
}; 

$(".tile").click(handleClick); 

你不需要this關鍵字只使用分配在同一範圍內的變量和函數。

這在JavaScript中有非常具體的含義。在互聯網上有很多關於這方面的文章。

-1

通過將click事件綁定到文檔中的元素而不是元素本身來解決。

$(document).on("click", ".tile", this.handleClick); 
0

該問題可能與您對this的使用有關。

在您的特定示例中,您將this.handleClick作爲處理程序進行綁定,並且僅在此後將變量​​定義爲函數 - 兩種失敗的方式。

首先,您需要忘記使用this,因爲它不是必需的,可能並不是指您認爲它的作用。其次重要的是,無論是使用函數定義或使用數據之前移動函數聲明:

$(".tile").click(handleClick); 

function handleClick() { // handleClick is defined in the whole scope 
    console.log("inside handle click"); 
}; 

var handleClick = function() { // handleClick is defined from this line forward (in this scope) 
    console.log("inside handle click"); 
}; 

$(".tile").click(handleClick); 
相關問題