jQuery嵌套选项卡第一个选项卡在单击它之前不起作用

时间:2009-12-21 05:22:57

标签: jquery ajax tabs

使用这段代码创建选项卡和嵌套选项卡非常有效,除非您单击其他嵌套选项卡之一,然后单击返回第一个嵌套选项卡,任何想法都不会有效。 / p>

jQuery.fn.tabs = function () {
  return this.each(function () {
    var ul = jQuery(this);



    ul.find('a[href^=#]').each(function (i) {
      var tablink = jQuery(this);

      if (i) {
        jQuery(tablink.attr('href')).hide();

      }
      else {
        tablink.addClass('current');
      }

      tablink.click(function () {
        jQuery(ul.find('a.current').removeClass('current').attr('href')).hide();
        jQuery(tablink.addClass('current').attr('href')).show();
        if(tablink.attr('rel')){
          $("#tab-preloader").show();
          $.ajax(
            {
              url: tablink.attr('rel'),
              cache: false,
              success: function(message)
              {
              jQuery(tablink.attr('href')).empty().append(message);
              $("#tab-preloader").hide();
              }
            });
        };

        return false;
      });
    });
  });
};

此外,我不知道它是否相关,但我正在使用rel“function”拉出嵌套选项卡的所有内容。菜单如下所示:

<li><a href="#tab1-b" rel="29623/static.html?nocache=true">Sports & Racing</a></li>
 <li><a href="#tab1-c" rel="29681/static.html?nocache=true">Shooters</a></li>

 <li><a href="#tab1-d" rel="29688/static.html?nocache=true">Kids & Family</a></li>

请原谅我缺乏知识,我对整个jquery事情都很陌生。再次感谢!

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望默认加载第一个标签。您可以通过触发其click事件来执行此操作,例如:

tablink.click(function () {
        //...
        });

//move down
if (i) {
    jQuery(tablink.attr('href')).hide();
}
else {
    tablink.click(); // will also add the class
}

如果您不想更改代码,只需在调用tabs()之后从代码中的某个位置运行此代码:

$('a.current').click();