load()之后的li选项卡上的jQuery addClass()

时间:2012-04-25 09:52:22

标签: jquery tabs load click preventdefault

我试图在li标签上使用addClass(' current')。问题是click函数调用load(),它会重置li选项卡上的当前类。如何在访问者点击的li上的load()之后添加addClass()?

我的表现如何:

$('div#container ul.tab-nav li').click(function(event) {
   $('div#container').load('index.htm').fadeIn("slow");
   $('div ul.tab-nav li').removeClass('current');
   $(this).addClass('current');
   event.preventDefault();
   return false;
}); 

<ul class="tab-nav">
    <li class="current">1</li>
    <li>2</li>
    <li>3</li>
</ul>

3 个答案:

答案 0 :(得分:5)

目前,.load()调用之后的代码在AJAX调用完成之前执行。在请求完成后,您需要使用.load()的成功回调来执行代码:

$('#container ul.tab-nav li').click(function(event) {
    $('#container').load('index.htm', function() {
        $('div ul.tab-nav li').removeClass('current');
        $(this).addClass('current').fadeIn("slow");
    });
    event.preventDefault();
    return false;
}); 

请注意,您正在覆盖#container的内容,因此一旦加载了新内容,点击事件处理程序就会丢失。如果这不是您想要的,请使用以下代码替换第一行代理:

$('#container').on('click', 'ul.tab-nav li', function(event) {

答案 1 :(得分:3)

在更改“当前”类后放置加载。

$('div#container ul.tab-nav li').click(function(event) {
  $('div ul.tab-nav li').removeClass('current');
  $(this).addClass('current');
  $('div#container').load('index.htm').fadeIn("slow");
  event.preventDefault();
  return false;
});

答案 2 :(得分:1)

使用JQuery,您可以在加载页面时执行代码:

$(document).ready(function(){
    // your code here
});