Как вы вызываете событие tabselect при программном выборе вкладки jquery ui - PullRequest
2 голосов
/ 04 февраля 2011

Я использую вкладки пользовательского интерфейса jQuery, и у меня есть событие tabselect, где я использую API для загрузки json и генерации содержимого вкладки:

$('#tabs').bind('tabsselect', function(event, ui) {
  if (ui.panel.id == "tab1") {
    $.getJSON(...)
    //load content of tab here
  }
}

Я также использую плагин истории для ссылок на вкладки:

$.address.change(function(event){
  $("#tabs").tabs( "select" , hash );
}

Таким образом, если пользователь переходит на мою страницу # tab1, то tab1 загружается автоматически. Проблема в том, что событие tabselect не запускается, поэтому содержимое не загружается.

Я убедился, что все это происходит после загрузки документа. Если я захожу на вкладку вручную, то она работает нормально, но только не при использовании вкладок («выбрать», ...);

Есть ли какая-либо опция, которую я должен включить, чтобы обычные события запускались для программного выбора вкладки, а не для ее нажатия?

Ответы [ 2 ]

4 голосов
/ 04 февраля 2011

Согласно документации для выбора:

Выберите вкладку, как если бы она была нажата.

Это фактически вызывает обработчик события tabselect, как вы можете видеть из этого примера:

http://jsfiddle.net/andrewwhitaker/UsnNu/1/

Интересно, что она не срабатывает, если программно выбрана вкладка, которая уже активна (в примере, если вы выбираете tab-1 программно, она не запускает обработчик событий). Может ли это быть проблемой? Или hash может содержать неправильное содержимое (т.е. проблема с плагином истории, который вы используете)?

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

3 голосов
/ 01 ноября 2011

Попробуйте подключиться к шоу-шоу.Это сработало для меня, поскольку у меня возникла та же проблема, когда я начал кэшировать состояния с вкладками.

$( ".selector" ).bind( "tabsshow", function(event, ui) {
  ...
});

дополнительная информация здесь: http://jqueryui.com/demos/tabs/#event-show

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...