изменение location.hash с помощью вкладок jquery ui - PullRequest
47 голосов
/ 20 февраля 2009

Я пытался найти способ изменить window.location.hash на текущую выбранную вкладку в вкладках пользовательского интерфейса Jquery .

Я пробовал:

$("#tabs > ul").tabs();
$("#tabs > ul").bind("tabsshow", function(event, ui) { 
window.location.hash = ui.tab;
})

Это приводит к изменению хеша на #undefined при смене вкладки.

Я тоже пробовал:

$("#tabs > ul").tabs({ 
select: function(event, ui) { 
window.location.hash = ui.tab }
});

Но, похоже, это вообще не сработало.

Любая помощь будет оценена. Спасибо.

Редактировать: Похоже, что часть моей первоначальной проблемы была связана с тем, что js где-то еще мешал этому. И принятый ответ, и другой предложенный ответ, слегка измененный, работают. Спасибо всем.

Ответы [ 17 ]

1 голос
/ 01 ноября 2013

Это сработало для меня, используя Jquery 1.8

$('#tabs').tabs({
    activate: function(event, ui) {
       window.location.hash = ui.newPanel.attr('id');
    }
});
1 голос
/ 27 сентября 2010

Я использую плагин для вкладок, вы можете найти его на github: https://github.com/jquerytools/jquerytools.github.com

0 голосов
/ 07 февраля 2017

У меня работает следующий код ..

$("#tabs").tabs({
   activate : function(event, ui) {
     window.location.hash = ui.newPanel[0].id;
  }
});
0 голосов
/ 23 марта 2016

У меня работает этот код:

$("#tabs").tabs({
    activate: function(event, ui) { 
       window.location.hash=ui.newPanel.selector; 
    }
});
0 голосов
/ 11 июля 2014

Этот кусок кода работал для меня:

window.location.hash="";
0 голосов
/ 20 мая 2009

Кажется, что сам ui.tab не возвращает правильную строку. (вместо этого он возвращает undefined, так что вы бы сказали, что он вообще ничего не возвращает.)

Попробуйте посмотреть в dev-версии ui.jquery.js, есть ли там какие-либо возвраты, может быть, вам нужно вызвать ребенка от ui.tab;

0 голосов
/ 05 февраля 2014

Этот код работает нормально для меня:

$('#tabs').tabs({
    select: function(event, ui) { 
        window.location = $(ui.tab).attr('href');
    }
});
...