0

タブプラグインでjQuery1.7.2とUI1.8.21を使用しています。

私は3つのタブを持っており、各タブには、いくつかのjavascript変数の値に基づいて非表示/表示したいスパンを持つテーブルがあります。

最初のタブでは問題なく動作しますが、2番目と3番目のタブでは動作しません。同じ機能を使用して、スパンのオン/オフを切り替えました。

この問題をjsfiddleで再現することはできません。それは大丈夫です。

function toggle_svn_user(codebase){

    if (codebase=="trunk" && user==trunk_svn_user){
        $('#'+codebase+"_svn_user").hide();
        $('#'+codebase+"_svn_relocate_cmd").hide();

        //$('#'+codebase+"_svn_user").css('display', 'none');
        console.log("hide "+codebase);
        console.log($('#'+codebase+"_svn_relocate_cmd").attr('style'));
    }else{
        $('#'+codebase+"_svn_user").show();
        $('#'+codebase+"_svn_relocate_cmd").show();
    }
 }

他の2つのタブにはさらに2つのifブロックがあります。これは「ブランチ」コードベースで機能します。そこで、「トランク」コードベースを使用してデバッグを開始しました。

トグル_svn_user()関数は$(document).ready(function(){ブロックで実行されます。また、いつでも機能をトリガーするボタンを追加しました。これは私に同じ結果を与えます。console.log()が表示するのは奇妙なことですが、display: none;firebugを使用してhtmlを表示すると、が表示されますdisplay: inline;。ボタンをクリックすると、console.logとhtmlが一致しません。

jQueryの.hide()を使おうとしましたが、何.css('display', 'none');も役に立ち.css('display', 'none !important');ませんでした。同じ結果のタブでアプリケーションを使用しようとしました。

それを修正する方法はありますか?または、スパンを表示/非表示にする方法は?

<span class="" id="trunk_svn_user">svn user:<span id="trunk_svn_user_value"></span></span>';
4

1 に答える 1

1

私の推測では、他のifブロックの1つが干渉している可能性があります-他のケースをコメントアウトすると機能しますか?

ちなみに、jQueryのtoggleメソッドを使用してコードを簡略化できます。.toggle( showOrHide )このページの3番目の使用法を参照してください:http: //api.jquery.com/toggle/

次に例を示します。

function toggle_svn_user(codebase){

    if (codebase=="trunk"){
        var showUser = (user == trunk_svn_user)

        $('#'+codebase+"_svn_user").toggle(showUser);
        $('#'+codebase+"_svn_relocate_cmd").toggle(showUser);

        console.log($('#'+codebase+"_svn_relocate_cmd").attr('style'));
    }
}
于 2012-09-05T02:09:29.617 に答える