Twitter Bootstrap - выполнить действие на вкладке "показанное" событие

Мне нужно "reset" часть информации о странице на основе выбранной вкладки в разделе вкладки jQuery начальной загрузки.

Документы показывают это событие, которое именно то, что мне нужно: http://twitter.github.com/bootstrap/javascript.html#tabs

$('a[data-toggle="tab"]').on('shown', function (e) {
  e.target // activated tab
  e.relatedTarget // previous tab
})

Мне нужно получить атрибут "href" e.Target и e.relatedTarget, который однозначно идентифицирует эти 2 вкладки и 2 панели вкладок, с которыми они связаны.

Здесь моя проблема: объект e - это некоторый объект, которого я не ожидал или не использовал. Я не могу использовать ни один из методов jQuery, таких как e.target.attr('href') - все обычные методы jquery, к которым я привык, исчезли. Я попытался получить доступ к нему как атрибут исходного объекта - e.href и получил https://127.0.0.1/test?action=view#tab-a" not #tab-a

Я могу написать обходной путь с этим, но я явно делаю что-то неправильно. Должен быть простой способ напрямую получить #tab-a из e.Target - но я не могу понять это.

Ответ 1

Попробуйте $(e.target).attr('href').

Ответ 2

Позднее вечеринке здесь будет мое взятие:

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {

    e.currentTarget ...

});

e.currentTarget - это текущий якорь, только что нажатый

Ответ 3

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

Использовать случай:, когда #hrefs обновляется динамически, и вы можете ретранслировать по индексу вкладки.

Функция jQuery .index() возвращает целое число, указывающее положение первого элемента в объекте jQuery относительно его элементов-близнецов.

var el = jQuery('#some .thing'); // some DOM node that contains tab html structure
var tab_list = el.find('.tabbable').first().find('a[data-toggle="tab"]');
// event namespace ".bs.tab" is important in some versions of Bootstrap 
tab_list.on('shown.bs.tab', function(e){

    // zero based index
    // jQuery function `.index()` returns zero-based DOM "order" index
    tab_index = $(e.target).parent().index();

    // store this index to cookie or somwhere
    // so that you can show that tab again when user comes back to page
    // or makes a page refresh (F5)
});

Ответ 4

Все это должно работать.

  • $(e.target).attr('href');
  • e.target.hash;
  • $(this).attr('href');
  • this.hash