0

関数を呼び出すときに $(this) の親を選択する際に問題があります。小さな 1 ボタンを選択すると、選択できるのは 1 つだけなので、ボタンが切り替わります。Big ボタンを設定するための関数呼び出しもあります。関数を呼び出さずに大きなボタンの状態を設定できることはわかっていますが、これはより多くの要件の始まりにすぎません。

$(this).parent().prev().addClass('big_selected'); を追加することを考えました 大きなボタンの要素をキャプチャして指定されたクラスを追加する方法についての提案はありますか?

ここでデモを参照してください... http://jsfiddle.net/froze1906/aSyUE/1/

4

2 に答える 2

2

あなたのフィドルで私のために働いたのは変化しています:

setBig();

に:

setBig.call(this);

setBig 関数でthisは、クリックされたボタンです。

あなたの setBig 関数には の引数がありますがevt、それを使用することはありません。渡す必要がある場合は、関数を次のように呼び出します。

setBig.call(this, evt);

また、同じ ID を持つ 2 つの要素があります。要素 ID は一意である必要があります。

于 2012-07-20T18:34:35.467 に答える
0

これは、あなたが望むものを達成するために必要なすべてです

$(':button[class*=small]').click(function(){ // <-- on all small button clicks
    $(this).parent().prev().addClass('big_selected'); // < -- add big class to closest big button
    $(this).addClass('small_selected'); // <-- add class to current clicked
    $(':button[class*=small]').not(this).removeClass('small_selected'); // <-- remove class from all but current clicked
    $(':button[class*=small]').not($(this).siblings().andSelf()).parent().prev().removeClass('big_selected'); // <-- remove class from Big that is not closest to current clicked
});

http://jsfiddle.net/aSyUE/3/

于 2012-07-20T18:37:25.137 に答える