2012-06-28 56 views
2
$(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”将内容添加到页面后,我的标签不再响应。加载后jQuery事件不起作用

任何人都可以请告诉我问题在哪里?

已解决!

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

$(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; 
     }); 
    }); 
} 

}); 
+0

谢谢你,我已经做到了。 – Shina

+1

你能告诉我们你的html代码吗? –

+0

也许点击应该也是'活的'(注意:在jQuery 1.7+中你应该使用'on')?它加载了什么内容?你可以发布一个jsfiddle> –

回答

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准备处理三次,只是把所有的jQuery的相关这里面的代码:

$(document).ready(function(){ 

}); 

文档:

+0

on()看起来什么都不做 - 即使用户第一次进入页面。这就是我首先使用live()的原因。任何原因? – Shina

+0

@Shina:它是最新的jQuery版本的一部分,请尝试使用它的最新版本。 – Blaster