Удалить вкладку jQuery из dnnTabs программно
Я успешно реализовал jQuery dnnTabs в пользовательском модуле. Я пытаюсь выяснить, как программно удалить вкладку.
Вот javascript для настройки вкладок:
<script type="text/javascript">
jQuery(function ($) {
$('#tabs-demo').dnnTabs();
});
</script>
Вот функция, которую я создал для удаления тега:
<script type="text/javascript">
jQuery(function ($) {
$('#tabs-demo').dnnTabs();
});
</script>
Вот функция, которую я создал для удаления тега:
<script type="text/javascript">
function removeTab(tabID) {
$('#tabs-demo').dnnTabs('remove', tabID);
};
</script>
Вот как я вызываю функцию из кода:
ScriptManager.RegisterStartupScript(Me.Page, Me.[GetType](), "tmp", "<script type='text/javascript'>removeTab(1);</script>", False)
Вкладка не удаляется. Я пробовал несколько разных итераций, но не повезло.
3 ответа
Взгляните на элемент управления ModuleSettings.
Список вкладок является неупорядоченным списком, а последний последний элемент списка имеет атрибут runat="server" и идентификатор. эта вкладка используется для настроек модуля. Он скрыт, когда их нет (или программист поместил их в дополнительный элемент управления с помощью ссылки действий из меню действий модулей).
<ul class="dnnAdminTabNav dnnClear">
<li><a href="#msModuleSettings"><%=LocalizeString("ModuleSettings")%></a></li>
<li><a href="#msPermissions"><%=LocalizeString("Permissions")%></a></li>
<li><a href="#msPageSettings"><%=LocalizeString("PageSettings")%></a></li>
<li id="specificSettingsTab" runat="server">
<asp:HyperLink href="#msSpecificSettings" ID="hlSpecificSettings" runat="server" />
</li>
</ul>
Видимость последней вкладки обрабатывается в событии OnLoad элемента управления, а "else" делает его невидимым:
//Set visibility of Specific Settings
if (SettingsControl == null == false)
{
//Get the module settings from the PortalSettings and pass the
//two settings hashtables to the sub control to process
SettingsControl.LoadSettings();
specificSettingsTab.Visible = true;
fsSpecific.Visible = true;
}
else
{
specificSettingsTab.Visible = false;
fsSpecific.Visible = false;
}
Надеюсь, поможет! Майкл
Вы можете попытаться пропустить dnnTabs('remove')
и просто удалите его из DOM с помощью jQuery:
<script type="text/javascript">
function removeTab(tabID) {
$('#tabs-demo '+tabID).remove();
};
</script>
Благодарю Джона и Брайана Дьюкса за то, что они вывели меня на правильный путь.
Вот окончательное решение:
<script type="text/javascript">
function removeTab(tabID) {
jQuery(function ($) {
$('#tabs-demo').tabs('remove', tabID);
});
};
</script>