Javascript ,事件处理程序总是被调用,即使事件没有被引发

Javascript , event handler is always called, even if the event is not raised(Javascript ,事件处理程序总是被调用,即使事件没有被引发)
本文介绍了Javascript ,事件处理程序总是被调用,即使事件没有被引发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我有以下代码扩展了 JQuery 并向 JQuery 添加了一个方法:

i have the following code which extends the JQuery and adds a method to the JQuery:

$.fn.attachWithMessage = function () {
  $(this).focusin(showMessage());
}

function showMessage() {
    alert('hi');
}

所以我可以按如下方式使用该代码:

so I can use that code as follows :

<input type="text" name="name" id="textbox" />
$(document).ready(function () {
   $("#textbox").attachWithMessage ();
});

当我第一次加载页面时,会出现一个带有 ('hi') 消息的消息框.

when I load the page for the first time, a message box shows up with ('hi') message.

即使我没有点击文本框.

even if I didn't click in the text box.

我也尝试了点击事件,消息仍然自动显示.

I also tried the click event, and the message still shows automatically.

有什么想法吗??

推荐答案

这里的问题是,当你将 showMessage() 作为参数传递给 focusin 时,函数showMessage执行返回值被传递给focusin.

The issue here is that when you pass showMessage() as a parameter to focusin, the function showMessage is executed and the return value is passed to focusin.

相反,您需要传递对函数的引用(不带括号).

Instead you need to pass a reference to the function (without the paranthesis).

使用以下代码进行扩展:

Use the following code to extend:

$.fn.attachWithMessage = function () {   
  $(this).focusin(showMessage); 
} 

工作示例@ http://jsfiddle.net/eXEP5/

如果您想将参数传递给 showMessage,请尝试以下操作:

If you want to pass a parameter to showMessage then try this:

$.fn.attachWithMessage = function () {   
  var param1 = "Some Param";
  $(this).focusin(function(){
     showMessage(param1); //Make sure showMessage is modified accordingly for the parameters.
  }); 
} 

这篇关于Javascript ,事件处理程序总是被调用,即使事件没有被引发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

SCRIPT5: Access is denied in IE9 on xmlhttprequest(SCRIPT5:在 IE9 中对 xmlhttprequest 的访问被拒绝)
XMLHttpRequest module not defined/found(XMLHttpRequest 模块未定义/未找到)
Show a progress bar for downloading files using XHR2/AJAX(显示使用 XHR2/AJAX 下载文件的进度条)
How can I open a JSON file in JavaScript without jQuery?(如何在没有 jQuery 的情况下在 JavaScript 中打开 JSON 文件?)
How do I get the HTTP status code with jQuery?(如何使用 jQuery 获取 HTTP 状态码?)
quot;Origin null is not allowed by Access-Control-Allow-Originquot; in Chrome. Why?(“Access-Control-Allow-Origin 不允许 Origin null在铬.为什么?)