1

テキストを太字と通常の間で切り替えたいのですが、このコードを作成しましたが、ページを開くと太字のボタンが消えますか?

    $("#bold").toggle(function() {
    $('.focus').css("font-weight", $(this).val());
    }, function() {
    $('.focus').css("font-weight", "normal");
    });

私のコードに何か問題がありますか? 助けてください、事前に感謝します。

4

3 に答える 3

7

jQuery 1.9 以降を使用していると仮定すると、問題は.toggle()イベント処理メソッドがライブラリから削除されたことです。したがって、実際に呼び出しているのは、.toggle()要素を非表示/表示する関数です。(以前のバージョンの jQuery では、両方の関数が存在し、jQuery は渡された引数に基づいて、どちらを意味するかを判断しました。)

.click()標準のハンドラーを使用して、独自のトグルを簡単に実装できます。

$("#bold").click(function() {
   var f = !$(this).data("toggleFlag");
   if (f) {
      $('.focus').css("font-weight", $(this).val());
   } else {
      $('.focus').css("font-weight", "normal");
   }
   $(this).data("toggleFlag", f);
});

これは.data()メソッドを使用してブール値フラグを追跡し、実行するコードを示します。クリック ハンドラーが初めて呼び出されると、フラグはundefined以前に設定されていないため as が返されますが、それをブール値に変換するだけ!です (最初のクリックで if を実行し、else ケースを実行したくない場合)。 )。

于 2013-10-26T08:03:10.260 に答える
5

そのバージョンの toggle は非推奨で削除されているため、表示されなくなります。新しいバージョンの jQuery では、トグルの表示のみが行われます。

代わりに次のようなことができます:

var state = true;

$("#bold").on('click', function() {
    $('.focus').css("font-weight", state ? this.value : 'normal');
    state = !state;
});

フィドル

于 2013-10-26T08:03:42.953 に答える
0

クリック後に要素が消えるのを見つけた唯一の解決策は、トグル効果が終了した後のコールバック関数です。コールバック関数を説明するリンクはこちらです。

ここに私のコードがあります:

jQuery('.menu li.item-487').click(function(){
        jQuery('#main-menu .moduletable .menu li').toggle("slow",function(){jQuery('.menu li.item-487').css('display' , 'block');});

    });
于 2014-09-01T17:23:34.263 に答える