jQuery Ajax 元素的后期绑定不起作用

jQuery late binding of Ajax elements doesn't work

本文关键字:绑定 不起作用 Ajax 元素 jQuery      更新时间:2023-09-26

我真的遇到了jQuery问题,我希望有人可以帮助我...

所以我在左边有一个选项列表,当你点击一个时,会通过右边的Ajax生成一个表单。表单中有以下元素:

<input type="text" class="value" value="something">

而我想做的是打电话

$(".value").tagsInput();

这是一个jQuery插件,当你提出问题时,它的工作方式非常类似于Stack Overflow的"标签"输入字段。

所以我试了这个:

$(document).ready(function() {
  $(".value").on("load", function () {
    console.log("Tags Input");
    $(".value").tagsInput();
  });
});

什么都没有打印出来。我也试过这个:

$(document).on("change", ".value", function () {
  console.log("Tags Input");
  $(".value").tagsInput();
});

它也不起作用。我想知道我哪里做错了。谁能帮我?

正如Shabnam所指出的,"change"事件不是你想要的,因为它只有在字段模糊时才触发。

无论如何,从插件文档中可以看出,您不必每次按下键时都调用该函数,但它会自主附加自己的事件处理程序。

所以,也许你应该只做:

$(document).ready(function() {
    $(".value").tagsInput();
});

.on处理程序将永远不起作用,因为 load 事件仅在页面准备就绪时由document触发。

如果您想稍微调试一下,请查看支持的回调,例如 onChange

旁注

我不喜欢该插件的编写方式,因为它会阻塞具有许多函数的"全局"jQuery.fn命名空间,而jQuery文档建议不要这样做(请参阅:命名空间)。

更新

看这里:http://jsfiddle.net/aFPHL/这个工作的例子(.load()被猴子修补以避免调用实际的URL,但它的行为与真实URL几乎相同)。

"change" 事件在输入元素失去焦点时触发。如果您希望在每个键输入结束时进行 ajax 调用,请尝试使用键盘事件