Перейдите по ссылкам вкладки на вкладке jquery ui.

У меня есть вкладки jquery, такие как

<ul id="tabsList">
    <li><a href="#tab-1">Name 1</a></li>
    <li><a href="#tab-2">Name 2</a></li>
    <li><a href="http://www.google.com/">Name 3</a></li>
</ul>

<div id="tab-1">content 1</div>
<div id="tab-2">content 2</div>

первые две вкладки загружают соответствующие div. Но третий должен идти на google.com, вместо этого он ничего не делает. Он просто добавляет http://example.com/index.html#ui-tabs- [object Object] на URL.

Я разрабатываю плагин WordPress, и на странице администратора нужен интерфейс вкладок. Я проверил это на локальном сервере и не работает

обновление:

я не хочу загружать google.com внутри страницы. Он должен открывать веб-страницу в новой вкладке/окне, как это делают обычные ссылки.


person Aakash Chakravarthy    schedule 15.06.2010    source источник
comment
почему есть вкладка, которая открывает новое окно.... не имеет смысла   -  person redsquare    schedule 15.06.2010
comment
@redsquare не может понять вопрос? хорошо прочитай вопрос   -  person Aakash Chakravarthy    schedule 16.06.2010
comment
Я прочитал вопрос - вы его изменили...   -  person redsquare    schedule 16.06.2010


Ответы (4)


У меня была такая же проблема. Я решил это, предоставив якорю вкладки, который должен быть загружен извне, класс с именем «followtablink». Затем я изменил вызов tabs() следующим образом:

$('.tabs').tabs({
select: function(event, ui) {
    var url = $.data(ui.tab, 'load.tabs');
    var className = ui.tab.className;

    if( className == "followtablink" ) {
        location.href = url;
        return false;
    }
    return true;
}});

Каждый раз, когда выбирается вкладка, она переходит по ссылке, когда встречает данный класс.

Примечание. В JQuery > 1.9.0 используйте активировать вместо выбора

person Tails    schedule 22.07.2010
comment
видел это в документах API, но, похоже, это не мешает вкладкам изначально загружать контент через ajax. какие-нибудь советы для этого? - person helgatheviking; 25.08.2011

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

[Как...] ...следовать URL-адресу вкладки, а не загружать ее содержимое через ajax

Обратите внимание, что открытие вкладки в новом окне является неожиданным, например. непоследовательное поведение, выявляющее проблему удобства использования (http://www.useit.com/alertbox/tabs.html ).

$('#example').tabs({
    select: function(event, ui) {
        var url = $.data(ui.tab, 'load.tabs');
        if( url ) {
            location.href = url;
            return false;
        }
        return true;
    } });

См. http://jqueryui.com/demos/tabs/#...follow_a_tab.27s_URL_instead_of_loading_its_content_via_ajax

Примечание. В JQuery > 1.9.0 используйте активировать вместо выбора

person MvanGeest    schedule 15.06.2010
comment
Что значит бесполезно? Есть ли ошибки? Это просто не работает? Пожалуйста, объясни. - person MvanGeest; 15.06.2010
comment
у меня тоже не сработало. содержимое ajax по-прежнему загружается изначально... и ссылки на вкладки изменяются на ui-tabs-[object] - person helgatheviking; 25.08.2011

Когда я увидел сгенерированный исходный код,

<li><a href="http://www.google.com/">Name 3</a></li>

был изменен на

<li><a href="#ui-tabs-[object Object]">Name 3</a></li>

Но другие списки были такими же. Я до сих пор не знаю, связано ли это с проблемой тестирования на локальном сервере.

Поэтому я попробовал этот вариант. Я удалил атрибут «href» и добавил класс с именем «theLink», например

<li><a class="theLink" target="_blank">Name 3</a></li>

а затем я добавил следующий jquery

$('.theLink).attr('href', 'http://www.google.com');

после этого он работал, как я за исключением. Третья вкладка при нажатии загружается google.com в новой вкладке

person Aakash Chakravarthy    schedule 16.06.2010

Вы не можете, так как запрос контента с google.com будет междоменным вызовом, а вызов xhr завершится ошибкой.

Почему бы не поместить iframe в третий div с атрибутом src, указывающим на Google?

Демонстрация здесь

<ul id="tabsList">
    <li><a href="#tab-1">Name 1</a></li>
    <li><a href="#tab-2">Name 2</a></li>
    <li><a href="#tab-3">Google Tab</a></li>
</ul>

<div id="tab-1">content 1</div>
<div id="tab-2">content 2</div>
<div id="tab-3">
    <iframe src="http://www.google.com"></iframe>
</div>
person redsquare    schedule 15.06.2010