【问题标题】:No jQuery events handled on HTML from AJAX results [duplicate]没有从 AJAX 结果在 HTML 上处理 jQuery 事件 [重复]
【发布时间】:2014-06-23 20:12:43
【问题描述】:

我创建了一个使用 AJAX 请求填充 div 内容的网页。

我正在使用

$('#div_id').html(data); 

填充 div,这工作正常。

但是所有返回的内容都丢失了它的 JQuery,没有更多的 onclick 事件和 JQueryUI 小部件。

我已经尝试调用所有这些

$('#div_id').trigger('create');
$('#div_id').html(data).trigger('create');
$('body').trigger('create');

和'pagecreate'而不是create一样。

尽管我在谷歌搜索时发现的所有内容都与 JQuery Mobile 有关,但这些都不起作用,所以我可能完全找错了树。

谢谢

【问题讨论】:

  • 您需要使用event delegation
  • 因为元素是在 DOM 加载后追加的,所以需要使用委托事件处理程序:$(document).on('create', '#div_id', fn);

标签: jquery ajax


【解决方案1】:

当你像这样将新元素附加到 DOM 时,你需要使用事件委托。

很难在没有看到 HTML 的情况下给出准确的答案,但是假设您有一个按钮,您正在添加一个单击处理程序...您可以将处理程序附加到 #div_id,而不是像这样:

$('#div_id').on('click', 'button', function () {
  //do your thing...
});

on 方法中的第二个参数是将调度事件的元素。你可以把它想象成一个“if”语句。处理程序附加到祖先元素,当事件冒泡到它时,事件被触发。当它被触发时,第二个参数被检查。它说“'按钮'调度了这个事件吗?”,如果答案是“是”,则函数回调运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 2014-04-24
    相关资源
    最近更新 更多