4

我有两个输入,一个静态:

<input type="text" class="someclass" />

和其他动态:

$("<input />", {
    type: "number",
    min: "0"
}).addClass("someclass").appendTo($("#someid"));

并且此代码在静态输入中运行良好:

$(document).on("focusout", ".someclass", function(){ alert("hello!");});

但是对于动态输入生成带有警报的无限循环,这仅在 Chrome 中发生,有人知道吗?

错误是当焦点转到具有相同类的另一个输入时

4

1 回答 1

4

正如 Terry 所说,警告框并不是解决任何 JS 问题的最佳方法。

用 console.log() 替换 alert 表明该事件在 Chrome 和其他浏览器中仅触发一次。

$("<input />", {
  type: "number",
  min: "0"
}).addClass("someclass").appendTo($("#someid"));

$(document).on("focusout", ".someclass", function() {
  console.log("alert");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="someclass" />
<div id='someid'>

</div>

看到这个答案:

我认为这是因为每次单击警报的“确定”按钮时,浏览器都会将焦点从警报发送到您的文本字段。您可能不会在代码的最终版本中弹出警报(methinks),因此从长远来看这可能不是问题。

https://stackoverflow.com/a/6869420/529024

于 2017-01-15T02:33:22.623 回答