3

だから私は次のようなhtmlを持っています:

<div id="avatar_choices">
    <label for="id_choice_0">
        <input id="id_choice_0" type="radio" name="choice" value="7" />
        <img src="someimage.jpg" />
    </label>
    <label for="id_choice_1">
        <input id="id_choice_1" type="radio" name="choice" value="8" />
        <img src="someimage2.jpg" />
    </label>
</div>

そしていくつかのスクリプト:

$('#avatar_choices input').hide();
$('#avatar_choices img').click(function(){
    $('#avatar_choices img').css('border', '2px solid #efefef');
    $(this).css('border', '2px solid #39c');
    $(this).siblings('input').attr('checked', 'checked');
});

目標は、ユーザーが画像オプションをクリックして、選択したものを境界線の色で強調表示できるようにすることです。

これはFFでうまく機能します。何らかの理由でIEで画像をクリックし、別の画像をクリックしてから最初の画像をクリックしようとすると、境界線は変更されません(選択されますが)。

編集:私の解決策は、半分偶然に起こりました。redsquareの回答により、コードを次のように変更しました。

$('#avatar_choices input').hide();
$('#avatar_choices img').click(function(){
    $('#avatar_choices img').removeClass('selected');
    $(this).addClass('selected');
    $(this).siblings('input').attr('checked', 'checked');
});

どこ:

#avatar_choices img.selected{border:2px solid #39c;}

図に行きます。

4

1 に答える 1

0

このシナリオでは addClass と removeClass を使用するのが最適です。メンテナンスが容易です。doctypeなどを確認できるように、完全なhtmlを貼り付けてもらえますか

于 2008-10-17T08:26:57.567 に答える