【问题标题】:Populating a div with ajax, jquery function is not being called用ajax填充div,不调用jquery函数
【发布时间】:2016-04-26 06:22:21
【问题描述】:

我有一个带有 2 个按钮的页面。 这个页面有这个div:

<div id="parentDiv" style="display:none">
    <div id="subDiv"></div>
</div>

单击按钮会使用 ajax 调用填充子 div 并向下滑动父 div。 ajax 调用一个页面,其中包含一个表单并调用一个 javascript 文件。表单正在为每个按钮填充不同的值。

在表单加载的 javascript 文件中,我有以下代码:

$(function() {
    alert('in');

    $('#close').on('click', function() {
       $('#subDiv').empty();
       $('#parentDiv').slideUp();
    });
});

问题是,点击按钮 1 我收到警报,然后我关闭表单并点击第二个按钮,然后我就再也没有收到警报了。

为什么会这样?

【问题讨论】:

  • 你的第二个按钮是干什么用的?
  • 提供触发ajax的parentDiv点击事件的代码
  • 从我可以告诉 te parentDiv 点击想再次触发 ajax
  • 你能提供一个plunker吗?

标签: jquery ajax


【解决方案1】:

您的警报会在文件初始化 (init) 时触发。您的关闭按钮的代码中没有alert();

如果您希望关闭按钮触发alert();,那么您必须在代码中显式添加它。我将alert()改为console.log()(更适合调试)。如果假设有警报,您可以更改它。这有意义吗?

编辑
您的按钮不起作用的原因是因为您正在动态加载文件。在您的情况下,您需要将事件绑定到 documentbody 或加载时 DOM 中的某个元素,我建议您使用 bodydocument

$(function() {
    console.log('file init');

    $(document).on('click', '#close', function() {
       $('#subDiv').empty();
       $('#parentDiv').slideUp();

       console.log('I closed the form');
    });
});

【讨论】:

  • 我不希望警报出现在关闭按钮上,我想检查单击第二个按钮时是否再次调用了 jquery 代码。我将整个 jquery 代码移至父页面,现在一切正常。
  • 嗯,这就是我正在做的事情,放置console.log() 是您验证您的函数是否被触发(调试)的一种方式。它将在 devtools 控制台中写入一条消息。 @SigalZahavi
  • 谢谢@Dejan,但控制台或警报并不重要,我想知道为什么它没有被调用而不是被调用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-23
  • 2016-03-19
  • 2016-12-23
相关资源
最近更新 更多