Динамическая вкладка в jquery не может быть выбрана после создания - PullRequest
0 голосов
/ 04 мая 2011

Я создаю динамическую вкладку с помощью кнопки «tab-add».

Кнопка «tab-add» добавляется в конец вкладки, а затем вкладка инициализируется, например,

$('#tabs').sortable({
    create: function( event, ui ) {
        $tabs = $( '#tabtab' ).tabs({
            create: function(event, ui) {
                $('#tabs').append( '<li id="tab-add" class="noSort"></li>' );
            },
            add: function( event, ui ) { ...

enter image description here

Когда нажимается кнопка «добавить вкладку» (которая на самом деле является li), создается новая вкладка с использованием .tabs ('add', href, input) обозначение.Затем я вставляю поле ввода в эту сгенерированную вкладку li.Это удаляет сгенерированную по умолчанию ссылку во вновь созданном li.

enter image description here

<li id="tab-1">
    <input type="text" id="tab-input"></input>
</li>

enter image description here

Это прекрасно работает, когда ввод теряет фокус собранной информацииво входных данных публикуется в базе данных и правильный синтаксис li возвращается в идентификатор "tab-1".

<li id="tab-1">
    <a href="#tabs-1">The Name of My New Tab</a>
</li>

Теперь, это где я застрял.

Правильная вкладкавыбран (см. выше), и панель отображается, однако, когда я нажимаю на другую уже созданную вкладку, а затем нажимаю на только что созданную вкладку, вкладка не выбирается (см. ниже).Когда я пытаюсь щелкнуть вкладку «Имя моей новой вкладки», она не выделяется (выделите).

enter image description here

Это связано с тем, что содержимоеиз "Tab-1" был создан динамически, и вкладка не обновилась сама.Поскольку, если я продолжу и добавлю еще одну новую вкладку, вкладка начнет работать нормально.Я не хочу обновлять страницу, я просто хочу, чтобы эта вкладка работала сразу после ее создания.Я пытался выбрать, загрузить и включить вкладку без эффекта.

Есть ли удобный способ регенерировать вкладки после такого динамического подхода?

Надеюсь, это чтение не было слишком скучным!Любая помощь будет высоко ценится.

1 Ответ

2 голосов
/ 04 мая 2011

Хорошо, теперь я понял.Проблема в том, что когда вы добавляете новую вкладку, код jquery.ui присоединяет несколько обработчиков к этому тегу, который вы затем заменяете.Вместо того, чтобы заменить этот тег, просто спрячьте его.Затем, когда ввод теряет фокус, измените текст внутри того, который был создан jquery.ui, и покажите его снова.Таким образом вы сохраните все обработчики, прикрепленные к jquery.ui.

...