我正在动态添加设置标签,如果有人点击页面上的我的设置链接,但是我想在设置标签失去焦点后删除它(意味着他们点击了另一个标签页)标签正在删除但是它似乎进入一个无限循环调用removeSettingsTab方法。知道为什么吗?
$("#navMain").tabs({
select: function(event, ui) {
var selected = $("#navMain").tabs( "option", "selected" );
if (selected == 8) {
removeSettingsTab();
}
}
});
$('.settings').click(function () {
createSettingsTab();
$('#navMain').tabs('select', "tab-setting");
});
function createSettingsTab() {
$("#navMain").tabs("add","#tab-setting","Settings");
$("#tab-setting").css("display","block");
}
function removeSettingsTab() {
$('#navMain').tabs('remove', 8);
}
答案 0 :(得分:1)
将处理程序绑定到检查
的show
事件
如果这两个条件都成立,则可以继续拨打removeSettingsTab()
。
例如,此代码适用于我(有3个选项卡,最后一个是“设置”,并且已添加):
$(function() {
$( "#navMain" ).tabs({
show: function() {
var $tabs = $("#navMain");
if ($tabs.tabs("option", "selected") != 2) {
$tabs.tabs("remove", 2);
}
}
});
});
答案 1 :(得分:1)
我不确定HTML结构,但您想要做的是定位所有标签并运行removeSettingsTab()
功能,如果所选标签不是设置标签:
$('#navMain').find('<all tab elements selector>').not('#tab-setting').on('click', removeSettingsTab);