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

时间:2012-08-10 17:43:59

标签: javascript javascript-events jquery

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

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

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

我想做的就是打电话

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

这是一个jQuery插件,当你提问时,它的工作方式与SO的“标签”输入字段非常相似。

所以我尝试了这个:

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

并且没有打印出来。我也试过这个:

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

它也不起作用。我想知道我做错了什么。谁能帮我吗?谢谢!

2 个答案:

答案 0 :(得分:0)

当输入元素失去焦点时,

“change”事件被触发。如果您希望在每个键输入结束时调用ajax,请尝试使用键盘事件

答案 1 :(得分:0)

正如Shabnam所指出的那样,“改变”事件你想要什么,因为只有在字段模糊时它才被触发。

无论如何,从插件文档来看,每次按下一个键时都不必调用该函数,但它会自动附加自己的事件处理程序。

所以,可能你应该没问题:

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

您的.on处理程序将无法正常工作,因为load事件仅在页面准备就绪时由document触发。

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

SIDE NOTE

我不喜欢该插件的编写方式,因为它会阻塞具有大量函数的“全局”jQuery.fn命名空间,而jQuery文档建议不要这样做(参见:Namespacing)。 / p>

<强>更新

请参阅此处:http://jsfiddle.net/aFPHL/此工作的一个示例(.load()是monkeypatched以避免必须调用实际的URL,但其行为几乎与真实的一样。)