【问题标题】:jQuery addClass() on li tab after load()加载()后li选项卡上的jQuery addClass()
【发布时间】:2012-04-25 09:52:21
【问题描述】:

我正在尝试在 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>

【问题讨论】:

    标签: jquery tabs load click preventdefault


    【解决方案1】:

    目前,.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 的内容,因此一旦加载了新内容,click 事件处理程序就会丢失。如果这不是您想要的,请通过将第一行替换为以下内容来使用委托:

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

    【讨论】:

    • 你能告诉我点击功能的样子吗?谢谢
    • @user1355815:我认为这是微不足道的。无论如何,我已经更新了我的答案。
    • 感谢您的回答。我将使用您的代码和您在编辑中添加的最后一行。现在的问题是它将当前类而不是
    • 添加到容器中。提前致谢!
  • $('#container ul.tab-nav li')替换$(this)
  • 这会将Class('current') 添加到每个
  • 【解决方案2】:

    改变类'current'后加载。

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        相关资源
        最近更新 更多
        热门标签