0

リスト内にたくさんのナビゲーションリンクがあります。リンクをクリックするたびに、いくつかのDIVを表示し、他のすべてを非表示にします。これは一般的なコンテンツパネルのパターンです。

私はこれを行うことによってそれを機能させることはできません:

<script type="text/javascript">
jQuery(document).ready(function() {

function show_tab(t) {
    jQuery(".tab").hide();
    jQuery(t).toggle();
}

jQuery("#login").click( show_tab("#login_tab") );

jQuery("#projects").click( show_tab("#projects_tab") );

});
</script>

しかし、匿名関数を使用するだけで機能させることができます。

<script type="text/javascript">
jQuery(document).ready(function() {

jQuery("#login").click(function()
{
jQuery(".tab").hide();
jQuery("#login_tab").toggle();
});

jQuery("#projects").click(function()
{
jQuery(".tab").hide();
jQuery("#projects_tab").toggle();
});

});
</script>

誰かが一方の方法が機能し、もう一方が機能しない理由を説明できますか?

4

3 に答える 3

1

あなたはそれを呼び出す代わりにのnameを渡す必要があります。function

jQuery("#login").click( show_tab );    
jQuery("#projects").click( show_tab) );

現在の要素のを使用してid、タブのIDを生成できます。show_tab

function show_tab()
{    
    jQuery(".tab").hide();  
    jQuery("#" + this.id + "_tab").toggle();    
}
于 2013-01-16T11:55:14.887 に答える
1

変化する:

jQuery("#login").click( show_tab("#login_tab") );
jQuery("#projects").click( show_tab("#projects_tab") );

jQuery("#login").click( function() {
 show_tab("#login_tab");
});
jQuery("#projects").click( function() {
    show_tab("#projects_tab");
});
于 2013-01-16T11:57:29.857 に答える
1

あなたがこれをするとき...

jQuery("#login").click( show_tab("#login_tab") );

show_tab("#login_tab")すぐに実行され、その結果を.clickハンドラー割り当てのパラメーターとして使用します。関数を実行せずに渡す必要がある場合は、括弧なしで参照する必要があります。あなたはこれを行うことができたでしょう...

jQuery("#login").click( function() {
    show_tab("#login_tab");
} );

またはこれさえ...

jQuery("#login").click( show_login_tab );

function show_login_tab() {
    show_tab("#login_tab");
}

これは、基本的に、作業バージョンで行ったように、無名関数を作成することと同じです。

于 2013-01-16T11:59:28.690 に答える