Javascript , event handler is always called, even if the event is not raised(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 ,事件处理程序总是被调用,即使事件没有被引发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Javascript ,事件处理程序总是被调用,即使事件没有被引发
基础教程推荐
- 我可以在浏览器中与Babel一起使用ES模块,而不捆绑我的代码吗? 2022-01-01
- 如何使用TypeScrip将固定承诺数组中的项设置为可选 2022-01-01
- Vue 3 – <过渡>渲染不能动画的非元素根节点 2022-01-01
- 自定义 XMLHttpRequest.prototype.open 2022-01-01
- html表格如何通过更改悬停边框来突出显示列? 2022-01-01
- Electron 将 Node.js 和 Chromium 上下文结合起来意味着 2022-01-01
- Chart.js 在线性图表上拖动点 2022-01-01
- 如何使用JIT在顺风css中使用布局变体? 2022-01-01
- 用于 Twitter 小部件宽度的 HTML/CSS 2022-01-01
- 直接将值设置为滑块 2022-01-01