2010-12-17 60 views
3

我定義了一個簡單的函數,並使用.bind()將鏈接附加到鏈接上。在.bind點擊處理程序中調用的jQuery函數正在文檔準備好上運行

該功能沒有在點擊上運行,而是在文檔準備就緒時運行。不知道爲什麼會這樣。

我正在使用jQuery 1.3.2。

HTML

<a href="#">click me</a> 

jQuery的

$(document).ready(function(){ 
    leftTurn = function($message){ 
    alert ($message);   
    }; 

    $('a').bind('click', leftTurn('hello')); 
}); 

代碼也here in a JSFiddle

+0

對於格式良好的問題和jsfiddle鏈接+1。 @ gov的回答也教會了我一些東西! – jyoseph 2010-12-17 17:32:28

回答

3

我想你可能需要使用綁定的回調/處理器:

$('a').bind('click', function(){ 
    leftTurn();  
}); 

Demo

docs

.bind(eventType, [ eventData ], handler(eventObject)) 
+2

是的 - 我在使用jQuery時很早就犯了這個錯誤。在函數內部封裝一個函數調用對我來說仍然有點奇怪。 – jwiscarson 2010-12-17 17:29:13

5

你調用函數時,你包括()末。 .bind()函數期望對函數本身的引用,而不是調用的結果。

leftTurn = function(){ 
     alert ('hello');   
    }; 

$(document).ready(function(){ 
    $('a').bind('click', leftTurn); 
}); 
+0

+1 - 不知道這是可能的,做得很好。 – jyoseph 2010-12-17 17:31:22

+2

我澄清了關於代碼中發生了什麼的描述。 – Soviut 2010-12-17 17:32:22

+0

@感謝soviut,對你很好,我很驚訝文本是怎麼來的... – kobe 2010-12-17 17:34:58