質問
私はjQueryのではdiv要素のセットにHTMLラジオボタンの動作を実装しようとしています。私はaddClassを使用するすべての要素から「設定」クラスを削除したい()をクリックする(1)の要素を再設定するには:
$(".button").each(function() {
$(this).click(function(){
// what goes here to call removeClass() on *all* the elements?
$(this).addClass("set");
});
});
私はすべての要素にremoveClass()を呼び出したい - この場合は$( " "ボタン)で、私は$を参照することはできません明示的に
(" ボタンをクリックします。")。私はちょうど$を呼び出すことはできません(「ボタン 『)。removeClass(』設定」)ループの外で、これは大きなプログラムの一部と他のパラメータによって変更することができ、各()ループ内の動作ですと。
内部からの要素の完全なセットにアクセスし、または変数としてそれらを渡す方法はありますか?それとも問題にアプローチする別の方法がありますか?
解決
あなたは、新しいセレクタの機能を探していることがあります。
jQuery.fn.test = function() {
console.log(this.selector); // .button
};
$('.button').test();
他のヒント
、jQueryのは、実際には、元の呼び出しでセレクタとして使用される文字列を返すことができます。 $( 'BLA')を参照してください。セレクタに
このは、しかし唯一の新しいバージョンで追加されています。
これは不必要に複雑ようで、それはあなたが最終的に達成しようとしているものの鮮明な画像を得るために役立つかもしれない。
あなたはjQueryの$(「div要素」)で好きなあなたが取得することができ、あなたのループ内で//ループ内の
あなたは言う、「私は$を参照することはできません(」。ボタン「)を明示的に。」。それはなぜですか?
$(".button").each(function() {
$(this).click(function(){
$('.button').removeClass('set'); // this should do it
$(this).addClass("set");
});
});
だけ変更します。
$(".button").each(function() {
$(this).click(function(){
$('.button').removeClass("set");
$(this).addClass("set");
});
});
私はそれが問題になる理由.buttonたびに引っ張っする必要が、少し遅い参照いけない、しかし、あなたがしたいようにそれはループに含む唯一の方法です。
まだわかりません
var buttons = $(".button");
buttons.each(function() {
$(this).click(function(){
// what goes here to call removeClass() on *all* the elements?
buttons.removeClass('set');
$(this).addClass("set");
});
});
私はテキストの本文に尋ねた質問に答えた:あなたは兄弟だ、すべての の他のの要素のクラスを設定したい場合は、兄弟を使用する
興味深いこのradioClass(下のロードマップであるため)の
何が欲しいのは兄弟になり、クリックイベントを設定するために、それぞれを使用していませんどちらか。
$(".button").click(function() {
$(this).addClass('set');
$(this).siblings('.button').removeClass('set');
});
アクションでは上記のために、この例を参照してください。