【问题标题】:jQuery functionality not working after AJAX callAJAX 调用后 jQuery 功能不起作用
【发布时间】:2014-04-17 09:37:34
【问题描述】:

我似乎遇到了 jQuery click 函数的问题,我有以下代码:

j$(document).ready(function(e) {

setInterval(function(){

    j$.ajax({
      url: "/include/new_customer.php",
      cache: false
    })
      .done(function( html ) {
        j$( "section .col-xs-12" ).append( html );
      });


  },80000);

    j$('a.dropDown').click(function(e){
        e.preventDefault();
        j$(this).closest('.row').next().toggleClass('hidden');
    });
});

使用以下 HTML(获取必要的内容):

<div class="col-xs-12>
    <div class="row">
        <a href="#" class="dropDown">Manage</a>
    </div>
    <div class="row hidden">
        <!-- stuff -->
    </div>    
</div>

您可以看到,如果您单击 a 标签,隐藏类的行将切换。我有附加另外 2 行的 AJAX,所以它会像这样:

<div class="col-xs-12>
        <div class="row">
            <a href="#" class="dropDown">Manage</a>
        </div>
        <div class="row hidden">
            <!-- stuff -->
        </div>  
        <div class="row">
            <a href="#" class="dropDown">Manage</a>
        </div>
        <div class="row hidden">
            <!-- stuff -->
        </div>    
    </div>

我的问题是,对于新数据,当我单击 a 标签时,切换功能不起作用。我已经做了一些测试,例如从检查元素中删除隐藏的类,并且有数据要显示。我不知道发生了什么事。请帮忙!

【问题讨论】:

标签: jquery html ajax


【解决方案1】:

您需要使用 event delegation 为动态加载的元素附加事件:

j$(document).on('click','a.dropDown',function(e){
    e.preventDefault();
    j$(this).closest('.row').next().toggleClass('hidden');
});

【讨论】:

  • 你这个该死的美人。这是我工作所需要的。我只是不知道在 Google 上搜索什么,谢谢!
猜你喜欢
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 2012-04-20
  • 1970-01-01
  • 1970-01-01
  • 2013-07-15
  • 1970-01-01
相关资源
最近更新 更多