1

toggleClass().どのメニューオプションが選択されたかを確認するために使用する選択メニューがあります。

$('.img1, .img2, .text1, .tex2').click(function() {
    $(this).toggleClass('selected');
});

私の選択メニューの仕組みは、2 つの要素にクラスがある場合selectedに何かが起こるというものです。例えば:

if ( $('.img1').hasClass('selected') && ('.text1').hasClass('selected') ) {
    // do something
}

これはすべて完全に機能しますが、ユーザーが twoimgsまたは twoを選択できないようにしたいと考えていますtexts。これを行う方法は、最初に選択した要素を選択したクラスから削除し、2 番目に選択した要素を選択したままにすることです。例えば:

if ( $('.img1').hasClass('selected') && ('.img2').hasClass('selected') ) {
        // remove selected from the element that was first clicked and keep selected on the element that was clicked second
}

これを達成する最良の方法は何ですか?前もって感謝します。

4

3 に答える 3

1

試す:

$('.img1, .img2').click(function() {
    $('.img1, .img2').removeClass('selected').filter(this).toggleClass('selected');
});
$('.text1, .text2').click(function() {
     $('.text1, .text2').removeClass('selected').filter(this).toggleClass('selected');
});

クリックイベントを分離すると、各タイプのアイテムが1つだけ選択されます。

また、あなたがやっていないことを確認してください$('this')

する必要があります$(this)

于 2012-07-31T18:24:18.313 に答える
0

これにより、クリックされた最初の項目に「first」というクラス名が追加されます。後は君しだい。

$('.img1, .img2, .text1, .tex2').click(function() {
    $('this').toggleClass('selected');
    if($('.first').length==0) {
        $('this').addClass('first');
    }
})
于 2012-07-31T18:13:14.163 に答える
0

おそらく、クリックされた項目の ID を追跡する配列があれば、それを使用できます。

var clickArr = new Array();
$('.img1, .img2, .text1, .tex2').click(function()
{
    $('this').toggleClass('selected');
    clickArr.push($(this).attr("id"));
});

次に、両方が選択されている場所を見つけたら:

if ( $('.img1').hasClass('selected') && ('.img2').hasClass('selected') )
{
    $("#"+clickArr[0]).removeClass("selected");
    clickArr.shift();
}

有効な「選択を処理する」たびに配列を空にする必要があるため、これは注意が必要です。しかし、これで始められるかもしれません。

于 2012-07-31T18:15:30.917 に答える