.每个令人困惑的行为点击事件
.each confusing behavior for click event
本文关键字:事件 更新时间:2023-09-26
我对javascript的foreach行为感到非常困惑,我使用jquery的。each来设置一些事件监听器:
$(".xRibbonMenu").each(function(index){
ribbonMenu= new RibbonMenu($(this));
$(this).find(".xRibbonTab").each(function(index){
ribbonMenu.tabs.push($(this));
$(this).click(function(){
ribbonMenu.div.find(".xRibbonTabActive").removeClass("xRibbonTabActive");
$(this).addClass("xRibbonTabActive");
ribbonMenu.div.find(".xRibbonContentActive").removeClass("xRibbonContentActive");
});
});
$(this).find(".xRibbonContent").each(function(index){
ribbonMenu.contents.push($(this));
});
RibbonMenus.push($(this));
});
但是如果事件被调用,ribbonMenu似乎总是循环的最后运行之一。我不知道其他语言中有这种行为。我做错了什么?
正如@Karl提到的,您需要将var
添加到变量中,如下所示:
var ribbonMenu= new RibbonMenu($(this));
这样做的原因是因为在javascript中,当你不显式地声明一个变量为局部时,它是全局的;您需要对此非常小心,因为这肯定会导致bug,如您所知;)
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使Javascript动态html表及其上的事件
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 对iPad上的点击事件反应缓慢
- 事件和状态
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- 从控制器返回后Ajax启动事件激发
- 如何从画布上的某个移动事件中获取X和Y
- Jquery:未触发select事件
- JsFiddle上的鼠标事件不起作用
- 只覆盖箭头键滚动事件
- $window.ga在AngularJS事件中未定义
- cron作业与Javascript计时事件
- ng更改事件不适用于Dropdown