10

所以我的脚本看起来像这样

function() {
    $( "#tabs" ).tabs();
});

function Wczytaj(link, div_id, parametr1, parametr2, parametr3)
{
   $.ajax(link, { data: { par1: parametr1, par2: parametr2, par3: parametr3 },
   type: "post",
     success: function(data) {
       $('#'+div_id).fadeOut("medium", function(){
       $(this).append(data);
      $('#'+div_id).fadeIn("medium");
     });
  }
 });
}
<div id="tabs">
    <ul>
        <li><a href="#id1" onClick="Wczytaj('trouble2.php','id1','null','null','null');">My id 1</a></li>
        <li><a href="#id2" onClick="Wczytaj('trouble2.php?action=lista','id2','null','null','null');">My id 2</a></li>
        <li><a href="#id3" onClick="Wczytaj('troubl2.php?action=old','id3','null','null','null');">My id3</a></li>
    </ul>

    <div id="id1"></div>
    <div id="id2"></div>
    <div id="id3"></div>
</div>

它可以正常工作,但是我还想使用 URL 地址来加载 div 内容,例如,http://myurl.com/page.php#id2应该加载带有选定选项卡的页面- 它可以工作,但由于属性id2,div 是空的。onClick如何解决?

我为我的英语道歉

4

3 回答 3

21

您不需要使用自己的函数将 AJAX 加载到选项卡中,jQuery 可以为您完成。只需将 设置href为 URL,不要添加<div>s。

<div id="tabs">
    <ul>
        <li><a href="trouble2.php">My id 1</a></li>
        <li><a href="trouble2.php?action=lista">My id 2</a></li>
        <li><a href="trouble2.php?action=old">My id3</a></li>
    </ul>
</div>

jQuery 将制作标签,并通过 AJAX自动加载页面。请参阅此处的文档:http: //jqueryui.com/tabs/#ajax

它也会<div>为你做的。在示例中,它们被命名为ui-tabs-X,其中X是选项卡索引。因此,http://myurl.com/page.php#ui-tabs-2应该在打开第二个选项卡的情况下加载页面。

在这里查看 jQuery 的演示:http: //jqueryui.com/resources/demos/tabs/ajax.html#ui-tabs-2

编辑:如果你想在远程选项卡加载之前或之后运行一个函数,jQuery UI 提供了tabsbeforeloadtabsload事件。

创建选项卡时可以绑定它们:

$('#tabs').tabs({
    beforeLoad: function(event, ui){
        alert('loading');
    },
    load: function(event, ui){
        alert('loaded');
    }
});

或者他们可以在之后绑定:

$('#tabs').on('tabsbeforeload', function(event, ui){
    alert('loading');
});

$('#tabs').on('tabsload', function(event, ui){
    alert('loaded');
});
于 2013-01-16T15:11:43.757 回答
1

在 Jquery 中加载选项卡 ajax 内容之前重置 href url:

$( "#pending_recs" ).tabs({
    beforeLoad: function( event, ui ) {
        var filter_url = get_url();
        var url_str = site_url+'/admin/pending_recs/'+filter_url+"/0";

        $("#pending_recs .ui-tabs-nav .ui-state-active a").attr('href',url_str);

        ui.panel.html('<div class="loading">Loading...</div>');

        ui.jqXHR.error(function() {
            ui.panel.html('<div align="center"><p>Unable to load the content, Please <a href="javascript:void(0)" onclick="return load_contents();">Click here to Reload</a>.</p></div>');
        });
    }
    ,load:function( event, ui ) { /* After page load*/  }
});
于 2015-01-30T11:24:17.727 回答
0

如果您只是将href每个选项卡链接的属性设置为您应该加载的 ajax URL,它应该可以工作。

如果您不想这样做,请摆脱这些onClick属性。问题在于,当页面加载触发器以选择特定选项卡时,例如#id2在绑定单击元素之前发生。您需要在此之前绑定点击处理程序,并在片段选择相关选项卡时调用相应的处理程序。

于 2013-01-16T15:10:16.777 回答