У меня есть страница со ссылками класса 'dialog', которые генерируются в JQueryUI dialog при нажатии.Эти диалоги создаются из других элементов, присутствующих на странице, и могут содержать ссылки класса add_tab, которые должны создавать новый JQueryUI [tab] (http://jqueryui.com/demos/dialog/) при нажатии. Эти вкладки загружают свое содержимое через Ajax и состоят из идентичных структур.Это означает, что ссылка «add_tab» в диалоговом окне создает новую вкладку, содержащую ссылки «диалогового окна», которые генерируют диалоги, содержащие дополнительные ссылки «add_tab» и т. Д.
Это базовая структура HTML:
<div id="tabs">
<ul>
<li><a href="#tabs-1">tab 1</a></li>
</ul>
<div id="tabs-1">
<p>This tab contains a <a href="#popup1" class="dialog" target="_new">popup</a> and a direct link to a <a href="tabs2.htm" class="add_tab">new tab</a>.</p>
<div id="popup1" style="display:nonee;">This popup contains a link to a <a href="tabs2.htm" class="add_tab" target="_new">new tab</a>.</div>
</div>
Используя метод .on () в JQuery 1.7, у меня возникают проблемы с правильной регистрацией обработчика кликов для ссылок «add_tab», которые появляются в диалогах на добавленных вкладках.зарегистрировать обработчики кликов для ссылок «диалогов» во вновь сгенерированных вкладках (чтобы они генерировали диалог), но не удалось зарегистрировать обработчики кликов для ссылок «add_tab», которые появляются внутри этих диалогов.упрощенная тестовая версия онлайн на http://www.kantl.be/ctb/temp/jquerytest/tabs1.htm. Возьмем, к примеру, следующий сценарий:
- на http://www.kantl.be/ctb/temp/jquerytest/tabs1.htm, нажмите «p»opup ': при этом в диалоговом окне будет сгенерировано диалоговое окно JQueryUI
- , щелкните «новая вкладка»: в новой добавленной вкладке JQueryUI
- появится новая вкладка с меткой tabs2.htmнажмите «всплывающее окно»: в этом диалоговом окне будет сгенерировано диалоговое окно JQueryUI
, щелкните «новая вкладка»: это НЕ создаст новую вкладку JQueryUI, а вместо этого откроет цель в новом окне
==> это показывает, как, по-видимому, этот обработчик событий NOT правильно зарегистрирован для ссылок 'add_tab', которые появляются внутри диалоговых окон, генерируемых во вновь добавленных вкладках
во вкладке с меткой tabs2.htm щелкните «новая вкладка»: это создаст новую вкладку JQueryUI
==> это показывает, как этот обработчик событий правильно регистрируется для ссылок «add_tab», которыепроисходят непосредственно во вновь добавленных вкладках
Это мой код JavaScript:
// these event registrations register clicks on $('a.dialog') and $('a.add_tab') to open new JQueryUI dialogs / tabs
// note: this event registration works for all such links on the original page
$('a.dialog').on('click', function(){
$($(this).attr('href')).dialog();
return false;
});
$('a.add_tab').on('click', function(){
$tabs.tabs( "add", $(this).attr('href'), 'added tab');
$('.ui-dialog-content').each(function(){$(this).dialog('close')})
return false;
});
// tabs: upon creation, register clicks on nested $('a.dialog') and $('a.add_tab') to open new JQueryUI dialogs / tabs
var $tabs = $( "#tabs" ).tabs({
add: function(event, ui) {
$tabs.tabs('select', '#' + ui.panel.id);
$tabs.tabs($tabs.tabs('option', 'selected'))
.on('click', 'a.dialog', function(){
$($(this).attr('href')).dialog();
return false;
})
// this registration doesn't seem to work for <a class="add_tab"> links occurring inside generated JQueryUI dialogs inside added JQueryUI tabs
.on('click', 'a.add_tab', function(){
$tabs.tabs( "add", $(this).attr('href'), 'added tab');
return false;
});
}
});
Я почти там!Может ли кто-нибудь помочь мне с последним обработчиком событий в коде выше?Любая помощь очень ценится!