2010-12-17 59 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