为什么这些(几乎)相同的演示中只有一个陷入循环



我一直在与最奇怪的循环作斗争。我将我的代码简化为这两个几乎相同的jsFiddles。

  1. http://jsfiddle.net/brentonstrine/crzTB/5/(无限循环)
  2. http://jsfiddle.net/brentonstrine/crzTB/7/(按我预期运行)

其中一个陷入循环(打开控制台)。其中一个没有。

唯一的区别是类名。说真的,在两个选项卡中打开它们,然后返回第四个选项卡。它们是相同的。

我已经在多台计算机上的Chrome,Firefox和IE中对此进行了测试,并且首先打开哪一台计算机。每次的结果都一样。为什么??????????????

$("body").on("keydown", ".fixedValue:not(input)", function (e) {
    e.preventDefault();
    console.log("the div (which is not input?) was triggered.");
    $(".fixedValue input").trigger("keydown", e.keyCode);
});
$(".fixedValue input").on("keydown", function (e) {
    console.log("input (e.g. not the div) triggered.");
});

没有陷入循环的那个在具有类 fixedValue 的某个项目中没有输入,因此没有要触发的输入。

正如 JayC 所说,那个不递归的原因是因为你没有更改类名的所有实例。要解决您的实际问题,请尝试以下操作:

$(".fixedValue input").on("keydown", function (e) {
    e.stopPropagation();
    console.log("input (e.g. not the div) triggered.");
});

看这里。

键向下事件冒泡到父div,然后在子级上再次触发。

相关内容

  • 没有找到相关文章

最新更新