Вопрос

Итак, у меня есть некоторый 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