所以我的脚本看起来像这样
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
加载带有选定标签的页面 - 它可以正常工作,但由于onClick
属性,div为空。如何解决?
我为我的英语道歉
答案 0 :(得分:20)
您不需要使用自己的函数将AJAX加载到选项卡中,jQuery可以为您执行此操作。只需将href
设置为网址,然后不要添加<div>
。
<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会提供tabsbeforeload
和tabsload
个事件。
创建标签时可以绑定它们:
$('#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');
});
答案 1 :(得分: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*/ }
});
答案 2 :(得分:0)
如果您只是将每个标签链接的href
属性设置为您应该加载的ajax网址,那么它应该可以正常工作。
如果您不想这样做,那么请删除onClick
属性。问题是,当页面加载用于选择特定选项卡的触发器(例如#id2
)在绑定点击元素之前发生。您需要在此之前绑定点击处理程序,并在片段选择相关选项卡时调用相应的处理程序。