在使用jQuery EasyUI开发后台管理系统时,刷新当前激活的tabs标签页是常见需求,比如提交表单后需要更新列表数据、修改配置后同步页面状态,都可以通过easyui提供的tabs组件API实现。

获取当前激活的tabs标签页
要刷新当前tabs,首先需要获取当前处于激活状态的标签页对象,easyui的tabs组件提供了getSelected方法可以直接获取当前选中的标签页。
// 获取当前页面的tabs容器,假设tabs的id为mainTabs
var $tabs = $('#mainTabs');
// 获取当前选中的标签页
var selectedTab = $tabs.tabs('getSelected');
// 如果不存在选中的标签页,直接返回
if (!selectedTab) {
return;
}
刷新当前tabs的通用实现方式
获取到当前标签页后,可以通过调用tabs的update方法重新加载标签页的内容,实现刷新效果,这种方式适用于大多数内容类型的标签页。
var $tabs = $('#mainTabs');
var selectedTab = $tabs.tabs('getSelected');
if (!selectedTab) {
return;
}
// 获取当前标签页的配置选项
var tabOptions = selectedTab.panel('options');
// 调用update方法重新加载内容
$tabs.tabs('update', {
tab: selectedTab,
options: {
// 保留原有的标题、图标等配置
title: tabOptions.title,
iconCls: tabOptions.iconCls,
// 重新设置href,触发内容重新加载
href: tabOptions.href,
// 如果原标签页有查询参数,需要拼接上
// href: tabOptions.href + '?t=' + new Date().getTime()
}
});
// 更新完成后重新渲染标签页内容
selectedTab.panel('refresh');
不同内容类型的刷新适配
标签页内容为datagrid的场景
如果当前tabs的内容是datagrid表格,不需要重新加载整个页面,只需要调用datagrid的reload方法即可,效率更高。
var $tabs = $('#mainTabs');
var selectedTab = $tabs.tabs('getSelected');
if (!selectedTab) {
return;
}
// 获取标签页内部的datagrid对象,假设datagrid的class为dataGrid
var $datagrid = selectedTab.find('.dataGrid');
if ($datagrid.length > 0) {
// 调用datagrid的reload方法刷新数据
$datagrid.datagrid('reload');
} else {
// 如果没有找到datagrid,使用通用的update方式刷新
var tabOptions = selectedTab.panel('options');
$tabs.tabs('update', {
tab: selectedTab,
options: {
title: tabOptions.title,
href: tabOptions.href
}
});
selectedTab.panel('refresh');
}
标签页内容为iframe的场景
如果标签页是通过iframe加载的外部页面,需要获取iframe的window对象,调用其location.reload方法实现刷新。
var $tabs = $('#mainTabs');
var selectedTab = $tabs.tabs('getSelected');
if (!selectedTab) {
return;
}
// 获取标签页内部的iframe元素
var $iframe = selectedTab.find('iframe');
if ($iframe.length > 0) {
// 获取iframe的window对象并调用reload方法
$iframe[0].contentWindow.location.reload();
} else {
// 非iframe场景使用通用刷新方式
var tabOptions = selectedTab.panel('options');
$tabs.tabs('update', {
tab: selectedTab,
options: {
title: tabOptions.title,
href: tabOptions.href
}
});
selectedTab.panel('refresh');
}
封装通用的刷新方法
为了方便在项目中多次调用,可以把刷新当前tabs的逻辑封装成一个通用方法,适配不同的内容类型。
/**
* 刷新当前激活的easyui tabs标签页
* @param {string} tabsId - tabs容器的id
*/
function refreshCurrentTab(tabsId) {
var $tabs = $('#' + tabsId);
if ($tabs.length === 0) {
console.error('未找到id为' + tabsId + '的tabs容器');
return;
}
var selectedTab = $tabs.tabs('getSelected');
if (!selectedTab) {
console.warn('当前没有选中的tabs标签页');
return;
}
// 优先处理datagrid内容
var $datagrid = selectedTab.find('.dataGrid');
if ($datagrid.length > 0) {
$datagrid.datagrid('reload');
return;
}
// 处理iframe内容
var $iframe = selectedTab.find('iframe');
if ($iframe.length > 0) {
$iframe[0].contentWindow.location.reload();
return;
}
// 通用刷新逻辑
var tabOptions = selectedTab.panel('options');
$tabs.tabs('update', {
tab: selectedTab,
options: {
title: tabOptions.title,
iconCls: tabOptions.iconCls,
// 添加时间戳避免缓存
href: tabOptions.href + (tabOptions.href.indexOf('?') > -1 ? '&' : '?') + 't=' + new Date().getTime()
}
});
selectedTab.panel('refresh');
}
// 调用示例:刷新id为mainTabs的tabs当前页
// refreshCurrentTab('mainTabs');
注意事项
- 如果标签页的href是动态拼接的参数,刷新时需要保留原有参数,避免丢失查询条件。
- 调用
update方法时,尽量保留原有的title、iconCls等配置,避免刷新后标签页样式异常。 - 如果标签页内容是通过
content参数静态定义的,而不是通过href加载的,刷新时需要重新设置content内容。 - 刷新操作可以放在按钮点击事件、表单提交成功回调等场景中触发,根据实际业务需求调整调用时机。
easyuirefresh_tabscurrent_tabdatagridpanel修改时间:2026-07-03 11:00:30