2011-04-18 11 views
1

jquery.cookiesを使用して、更新後にタブを選択したままにしています。jQueryのUIタブ - クッキーの競合と追加されたタブの選択?

新しいタブが作成されるとすぐに、そのタブが選択されるようにしたいと思います。 - 私は新しいタブ、以前に開いたままになり、選択したものを作成したときに(クッキーが上書きされるかもしれないので

var cookieName = 'stickyTab'; 

    $(".tabs").tabs({ 
     fx: { 
      opacity: 'toggle', 
      duration: 'fast' 
     }, 
     selected: ($.cookies.get(cookieName) || 0), 
        select: function(e, ui) 
       { 
       $.cookies.set(cookieName, ui.index); 
       } 
    }); 

    var $tabs = $('.tabs').tabs({ 
    add: function(event, ui) { 
     $tabs.tabs('select', '#' + ui.panel.id); 
    } 
}); 

残念ながら、これは動作しません:私は現在持っているjQueryのUI命令を使用して

select機能?

私のタブがPHP POSTを介して作成され、データはDBから取得し、LIDIV要素を作成するために、ループバックされます。(つまり、私のタブがあるない作成したディレクトリ間違いなくJSから)。

誰でもこれを解決するための提案がありますか?

ありがとうございます!

+0

'$ tabs.tabs( 'select'、 '#' + ui.panel.id);'を[このデモ](http://jqueryui.com/demos/tabs/#manipulation)に追加しました。そしてそれは[意図された](http://jsfiddle.net/Khez/WrGYJ/)として振る舞いました。これはすべて関連コードですか? – Khez

+0

@khez - 私はあなたのフィドルと私の状況の違いは、私はJS経由でタブを追加していないと思う - 私の新しいタブは、DBから収集され、ループを作成して 'lis'と' divs'を作成してください – pepe

+0

PHP/ASPであなたの質問にタグを付けるか、少なくともあなたの投稿にそれを言及することを考えてください。どのようにタブを追加していますか? – Khez

答えて

0

あなたのバグは、JavaScriptを使用してCookieを更新しているに過ぎませんが、ページの再読み込み時にPHPを使用して新しいタブを追加しているためです。これにより、新しいタブが追加されますが、Cookieと同期されません。

jQuery UIタブselectedプロパティはインデックスであるため、そして、あなたは、タブは、アレイ、シンプルを介して作成されている:

setcookie('stickyTab',count($array)-1); 
// this will set the selected tab to the last appended tab 

は、あなただけの新しいタブが追加されたときに、このステートメントを実行する必要があります注意してください。それ以外の場合は、JSを介してクッキーセットを上書きします。

これ以上問題が発生した場合は、必ずコメントしてください。解決するようにしてください。

+0

ありがとう@khez - 私の元のJSコードのどの行にこれを挿入すべきですか?8-12行を削除して 'selected:set_cookie( 'stickyTab'、count($ array)-1);と置き換えてください。または**私はこのラインをどこかに追加するべきですか? – pepe

+0

これはPHPのステートメントです。ヘッダーが送信される前にPHPで追加します。 – Khez

+0

残念ながら、PHPの上にその行を追加するとサーバエラーが発生します( '$ array'の代わりに私の配列の名前を使用しました) – pepe

関連する問題