所以我有一些像这样的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;}

去图。

有帮助吗?

解决方案

在这种情况下最好使用addClass和removeClass。更易于维护。 你可以粘贴你的完整HTML,以便我可以看到你的doctype等

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top