15

ブートストラップ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"#tab-a

これで回避策をコーディングできますが、明らかに何か間違ったことをしています。直接アクセスする簡単な方法があるはずですが、#tab-a私にはわかりe.targetません。

4

4 に答える 4

27

$(e.target).attr('href')代わりに試してください。

于 2012-10-31T18:34:26.417 に答える
4

ここでパーティーに遅れるのは私の見解です:

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

    e.currentTarget ...

});

e.currentTargetは、クリックしたばかりの現在のアンカーです

于 2014-09-13T16:52:37.383 に答える
1

DOMで手動でカウントせずに、現在選択されているタブインデックスを誰かが知る必要がある場合。

ユースケース: #hrefsが動的に更新され、タブインデックスで中継できる場合。

jQuery関数は、兄弟要素に対するjQueryオブジェクト内の最初の要素の位置を示す整数を.index()返します。

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)
});
于 2014-02-03T11:41:52.443 に答える
0

これらはすべて機能するはずです。

  1. $(e.target).attr('href');
  2. e.target.hash;
  3. $(this).attr('href');
  4. this.hash
于 2014-10-07T17:12:06.950 に答える