Динамические вкладки не имеют идентификаторов - PullRequest
1 голос
/ 19 мая 2011

Я динамически добавляю вкладки на свою страницу, используя следующий сценарий:

var tabs = $("#tabs");
$.each(results, function(index, item) {
    tabs.tabs("add","get_tab_content.aspx?tab=" + item.key, item.value);
});

, где results содержит данные json.

Это все работает найти, кроме случаев, когда я пытаюсьполучить вкладку id с помощью следующего сценария:

$("li.ui-tabs-selected").attr("id")

Эта строка ничего не возвращает, как будто id не установлен для вкладок в цикле выше.

Однако,эта строка работает нормально, если я вручную ввожу добавить вкладки и идентификаторы, например

<div id="tabs">
    <ul>
        <li class="tab" id="tab_1"><a href="tab0.htm">Home</a></li>
        <li class="tab" id="tab_2"><a href="tab1.htm">Default</a></li>
    </ul>
</div>

Для этого ручного html строка $("li.ui-tabs-selected").attr("id") возвращает либо tab_1, либо tab_2.

Как сделатьЯ получаю id вкладки, когда создаю вкладки, используя цикл выше?Я предполагаю, что мне нужно дать им идентификаторы при добавлении вкладок?Но это только предположение.Если это так, как я могу дать им идентификаторы?

1 Ответ

1 голос
/ 19 мая 2011

Не добавляет id с, потому что это не нужно.

Используется индекс вкладки для их идентификации.

Зачем вам нужен идентификатор на них?


обновление

Чтобы добавить идентификатор для каждой вкладки, вы можете сделать следующее ( при условии, что вы используете код, который вы указали в своем вопросе, где новые вкладки добавляются в конце по умолчанию )

tabs.tabs("add","get_tab_content.aspx?tab=" + item.key, item.value)
    .find('>ul>li:last') // find the last li element, the tab we just added
    .attr('id',item.id); // use whatever id you want here ..i assumed you have an id in your json..

пример: http://jsfiddle.net/gaby/7Grb8/


обновление 2

если вы хотите сделать это с индексом, то вы должны использовать var selected = tabs.tabs( "option", "selected" ); как , описанный в документации

...