在返回 false 后停止添加的事件侦听器函数
Stop added event listener functions after one returns false
我创建了一个函数来将onblur事件绑定到元素。该函数采用三个字符串变量。元素的 id、要绑定到元素的函数以及它可能需要的任何参数。然后在函数中,我使用此建议来利用字符串来调用函数。
在模糊上绑定的每个函数都是一个验证函数,它将返回 true 或 false。我的目标是,如果将多个 onblur 事件添加到元素中,并且其中任何一个返回 false,则不会调用下一个事件。但是,正如现在所写的那样,添加到元素中的每个事件都会触发,即使有返回 false。
我的jquery和javascript版本都添加了多个onblur事件,无论它们返回真还是假,都会触发它们。
this.bindFormElements = function(elementId, ruleName, ruleParameters)
{
var onBlurEvent = function()
{
if(dynFormSkin[ruleName](this, ruleParameters) == false)
{
return false;
}
};
document.getElementById(elementId).addEventListener("blur", onBlurEvent, false);
}
。
this.bindFormElements = function(elementId, ruleName, ruleParameters)
{
$("#" + elementId).blur(function()
{
if(dynFormSkin[ruleName](this, ruleParameters) == false)
{
return false;
}
});
}
执行return false
与执行相同:
event.stopPropagation()
event.preventDefault()
stopPropagation()
防止事件从 DOM 树冒泡到父元素,preventDefault()
只是阻止任何"默认"操作,例如跟踪链接。
您要查找的内容称为 stopImmediatePropagation()
. 这将停止同一元素(及其父元素)上的任何其他事件处理程序。
this.bindFormElements = function(elementId, ruleName, ruleParameters)
{
$("#" + elementId).blur(function(event)
{
if(dynFormSkin[ruleName](this, ruleParameters) == false)
{
event.stopImmediatePropagation();
return false;
}
});
};
有关详细信息,请参阅此答案:https://stackoverflow.com/a/5302939
相关文章:
- 如何在for循环中添加事件侦听器
- 未命中服务器发送的事件侦听器
- 如何覆盖原型中的事件侦听器
- 无法将事件侦听器附加到画布
- 如何在d3.js中自定义事件侦听器
- 在es6中,将带有回调的事件侦听器设置为可迭代的
- 事件侦听器未在chrome扩展中的options.js中启动
- IE8更改文本区域上的事件侦听器不工作
- 将事件侦听器添加到文档,而不是签入元素存在,然后添加事件侦听器
- javascript删除事件侦听器
- 我应该/如何清除mousemove JQuery事件侦听器
- 在JQuery中使用谷歌地图Api事件/侦听器
- 如何使用我的Jquery代码创建委托事件侦听器
- 'mousemove'画布中的事件侦听器-指针仅在最后一个矩形中更改
- 为什么此事件侦听器不工作
- 是否可以在数字输入框中的小按钮中添加事件侦听器
- 在Google Chrome扩展中添加事件侦听器
- SVG元素在转换后会丢失事件侦听器
- jQuery事件侦听器多次启动
- 如何在不删除类似侦听器的情况下从父对象中删除jQuery事件侦听器