jQuery脚本仅在第二个事件上执行
jQuery script is only getting executed on 2nd event
代码如下,我坚持这背后的原因,但焦点/模糊事件仅在事件发生的第二次发生时被激活。我目前并不担心其他任何事情,而是担心为什么这仅在第一次之后才在任何事情上运行的原因。
.JS:
var App = function () {
this.page = window.location.pathname.split("/public/portal/")[1].split("/")[0];
}
$.extend(App.prototype, {
// This will set the variables in the box and display / hide
setVariables: function (ele, vars) {
this.variables = vars || variables;
var list = $("#page_variables .text_variables");
// Create the variable box
$('li', list).remove(); // first remove all variables currently in the box
console.log(ele);
ele.bind('focus', function () {
list.fadeIn();
})
.bind('blur', function () {
list.fadeOut();
});
}
});
(function ($, undefined) {
$(".tvar_text").focus(function () {
port.setVariables($(this), null);
});
})(jQuery);
.HTML:
<div id="page_variables">
<div class="text_variables" style="display:none">
<ul>
<strong style="text-decoration: underline;">VARIABLES</strong>
<li>{provider}</li>
<li>{date}</li>
<li>{callerid}</li>
<li>{time}</li>
<li>{location}</li>
<li>{recipient}</li>
<li>{misc1}</li>
<li>{misc2}</li>
<li>{misc3}</li>
<li>{misc4}</li>
</ul>
</div>
</div>
<textarea class="tvar_text" name="Vtmpl" cols="50" rows="10" style="min-height: 200px; overflow: hidden; resize: none; height: 50px;"></textarea>
这是因为您要从焦点事件处理程序绑定焦点事件。(.focus(...)
调用与.bind('focus', ...)
调用相同。
第一次发生焦点事件时,它将绑定事件以显示和隐藏列表(但不显示列表(。
第一次发生模糊事件时,事件处理程序工作正常,但由于列表尚不可见,因此您看不到它。
第二次发生焦点事件时,它将显示列表。
此外,每次发生焦点事件时,它都会添加另一组事件处理程序来显示和隐藏列表。如果您显示和隐藏列表几次,它将开始表现得很奇怪和/或开始变得迟钝。最终它会崩溃/冻结浏览器,以防有太多事件处理程序试图同时显示或隐藏列表。
若要在与选择器匹配的每个元素上调用函数,可以使用 each
方法:
$(".tvar_text").each(function(i, el){
port.setVariables($(el), null);
});
相关文章:
- 如何在onclick事件执行代码时在ImageButton上设置加载gif
- 如果类有多个事件处理程序方法,如何防止多个事件执行
- 单击事件执行单击和悬停事件处理程序,即使单击事件处理程序取消绑定所有处理程序也是如此
- 对多个滚动事件执行一次操作并防止滚动
- jQuery全局/本地事件执行顺序
- 作为预生成事件执行PowerShell脚本失败
- 允许对目标事件执行默认操作,并阻止对父级执行默认操作
- 使用点击jquery事件执行css3转换
- 阻止.mouseout事件执行
- 无法通过键盘事件执行功能
- 循环中的Javascript onclick事件执行了1次以上
- 如何将多个事件处理程序添加到同一个html元素中,并根据事件执行不同的方法
- 在Angular 2中处理click和clickOutside事件执行优先级的最佳方式
- 在mustache模板中对点击事件执行函数
- Java脚本函数,直到save事件执行完成
- 每个事件执行多次代码:多次下载
- 当onclick事件执行异步代码时,我如何在新选项卡请求中打开
- 在所有控制器中对同一个事件执行同一个函数——AngularJS
- Jquery事件执行两次
- 对img load事件执行html注释