【问题标题】:jquery on click event doesn't work when using ajax使用ajax时点击事件的jquery不起作用
【发布时间】:2014-11-25 03:12:24
【问题描述】:

我正在做一个 ajax 从我的谷歌驱动器上的电子表格中提取信息,然后使用以下代码在 HTML 中显示它们:

我有这个 HTML:

        <section class="p-booking" id="booking">
            <div class="container">
                <div class="row">
                    <div class="event-box">
                        <!-- caixas puxados do drive -->
                    </div>
                </div>
        </section>

还有这个 JS:

$.getJSON(url, function (data) {


var caixasEvento = [];
caixasEvento.push('<div class="col-md-3">');
caixasEvento.push('<div data-id="' + something + '" class="box">');
caixasEvento.push('<h1 class="day">' + something + '</h1>');
caixasEvento.push('<h1 class="local">' + something + '</h1>');
caixasEvento.push('<img class="local-img" src="' + image + '">');
caixasEvento.push('</div>');
caixasEvento.push('</div>');
$('.event-box').append(caixasEvento.join(''));
});

然后,每次有人点击该框时,我都需要提醒:

$('.box').on('click', function() {
    alert('test')
});

我在我的 html 文档底部使用了一个脚本链接标签。

该框通常会显示所有驱动器信息。

它不起作用。我认为这是与 ajax 相关的问题,因为如果我使用“box”类创建一个 div,则警报会起作用。

【问题讨论】:

  • 我在您的代码示例中没有看到任何 ajax。

标签: javascript jquery ajax


【解决方案1】:

我猜这是因为当您尝试设置侦听器时页面上不存在 box 元素。试试这个:

$('.event-box').on('click', '.box', function() {
  // do stuff here
});

【讨论】:

  • @Dri 你能提供更多的原始代码吗?从您提供的内容中很难判断出问题所在。执行顺序在这里可能很重要。
  • 没问题!很高兴它有帮助。 FWIW,我确实使用我的解决方案尝试了您的示例,并且能够显示警报。
  • 我不知道发生了什么。我又写了代码,它工作了哈哈..谢谢!
【解决方案2】:

试试这个:

 $('.box').each(function()
 {
     $(this).click(clickHandler);
 });


 function clickhandler()
 {
      alert('test')
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多