加载后jQuery事件无法正常工作

时间:2012-06-28 08:25:19

标签: jquery

$(document).ready(function(){

$(function() {
    $('a.ajaxload').click(function(e) {           
      var url = $(this).attr('href');
      $('#desktopcontainer').load(url); // load the html response into a DOM element
      e.preventDefault(); // stop the browser from following the link
    });
});

$(function() {
    $(".accordion .accordion-tabs .tab").each(function(){
        $(this).click(function(){
            if ($(this).hasClass('tab')){
            $(this).removeClass('tab');
            $(this).addClass('active');
          }else{
            $(this).removeClass('active');
                    $(this).addClass('tab');
          }

          $(this).next().slideToggle('slow');
                return false;
        });
    });
});
});

我的标签工作正常,但点击了" a.ajaxload"要向页面添加内容,我的标签不再响应。

有谁能告诉我问题出在哪里?

解决!!!

我所做的是在加载后添加函数...查看下面的新代码并查看差异。我希望它有所帮助。

$(document).ready(function(){

initDashboard();

$(function() {
    $('a.ajaxload').click(function(e) {           
      var url = $(this).attr('href');
      $('#desktopcontainer').load(url); // load the html response into a DOM element
      e.preventDefault(); // stop the browser from following the link
      initDashboard();
    });
});

function initDashboard() {
    $(".accordion .accordion-tabs .tab").each(function(){
        $(this).click(function(){
            if ($(this).hasClass('tab')){
            $(this).removeClass('tab');
            $(this).addClass('active');
          }else{
            $(this).removeClass('active');
                    $(this).addClass('tab');
          }

          $(this).next().slideToggle('slow');
                return false;
        });
    });
}

});

1 个答案:

答案 0 :(得分:2)

您需要on(),因为它是动态添加的(例如,通过load方法插入):

$('.accordion .accordion-tabs').on('click', '.tab', function(){
   if ($(this).hasClass('tab')) {
        $(this).removeClass('tab');
        $(this).addClass('active');
   }else{
        $(this).removeClass('active');
        $(this).addClass('tab');
   }

   $(this).next().slideToggle('slow');
        return false;    
   });
});

也不需要使用jQuery ready handler 三次,只需将所有与jQuery相关的代码放入其中:

$(document).ready(function(){

});

<强>文档: