我有下面的代码扩展JQuery和添加一个方法的JQuery:
$.fn.attachWithMessage = function () {
$(this).focusin(showMessage());
}
function showMessage() {
alert('hi');
}
所以我可以像这样使用代码:
<input type="text" name="name" id="textbox" />
$(document).ready(function () {
$("#textbox").attachWithMessage ();
});
当我第一次加载页面时,一个消息框显示('hi')消息。
即使我没有点击文本框
我也尝试了点击事件,消息仍然自动显示。
有什么想法吗??
这里的问题是,当您将showMessage()
作为参数传递给focusin
时,函数showMessage
是执行, 返回值传递给focusin
。
相反,你需要传递一个对函数的引用(不带括号)。
使用以下代码进行扩展:
$.fn.attachWithMessage = function () {
$(this).focusin(showMessage);
}
工作实例@ http://jsfiddle.net/eXEP5/
编辑:如果你想传递一个参数给showMessage,那么试试这个:
$.fn.attachWithMessage = function () {
var param1 = "Some Param";
$(this).focusin(function(){
showMessage(param1); //Make sure showMessage is modified accordingly for the parameters.
});
}
去掉括号
$(this).focusin(showMessage());
应该$(this).focusin(showMessage);
希望能有所帮助