2

私はjQuery UIタブを使用しています。APIを使用してjsonをロードし、タブのコンテンツを生成するtabselectイベントがあります。

$('#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 );
}

したがって、ユーザーが mypage#tab1 にアクセスすると、tab1 が自動的に読み込まれます。問題は、tabselect イベントが発生しないため、コンテンツが読み込まれないことです。

ドキュメントがロードされた後に、これらすべてが行われるようにしました。手動でタブに移動すると、tabs("select", ...); を使用する場合とは異なり、正常に動作します。

タブをクリックするのではなく、プログラムでタブを選択するために通常のイベントが発生するように、有効にする必要があるオプションはありますか?

4

2 に答える 2

4

selectのドキュメントによると:

クリックされたかのように、タブを選択します。

tabselectこの例でわかるように、これは実際にイベント ハンドラーを呼び出します。

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

興味深いことに、既にアクティブになっているタブがプログラムによって選択された場合は起動しません (この例では、プログラムによって選択された場合tab-1、イベント ハンドラーは起動しません)。これが問題でしょうか?またはhash、間違ったコンテンツが含まれている可能性があります (つまり、使用している履歴プラグインの問題)?

申し訳ありませんが、決定的な答えを出すことができませんでしたが、問題を追跡するのに役立つことを願っています.

于 2011-02-04T03:06:41.230 に答える
3

代わりに show イベントにフックしてみてください。タブ付きの状態をキャッシュし始めたときに同じ問題が発生したため、これでうまくいきました。

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

詳細はこちら: http://jqueryui.com/demos/tabs/#event-show

于 2011-11-01T17:10:31.727 に答える