jQuery toggle radio / parent style также будет переключать соседние радиостанции с разными именами

Чтобы сначала дать вам представление о том, на что похож мой HTML, у меня есть страница с 3 группами переключателей, каждая группа радиостанций названа по своему контейнеру (например, Page1, Page2, Page3). Таким образом, первая группа радиостанций имеет общее имя «page1», а вторая - «page2» и т. Д.

Поэтому я использую jQuery для переключения переключателей и класса таблицы, содержащей этот переключатель (например, addClass, removeClass для переключения). Переключатель работает нормально, как и добавление и удаление класса на переключателе. Моя проблема в том, что если у меня выбрано радио со страницы 2 или страницы 3, а затем я выбираю / повторно выбираю радио страницы 1, jQuery удалит класс стилей проверенных радио страницы 2 и страница 3.

Вот ссылка на демонстрацию JSfiddle.

И вот посмотрите на jQuery, который я использую.

$(function() {

$('table').click(function(event) {
    $(this).closest('.container').addClass('selected').parent().siblings().each(function() {
        $(this).find('.container').removeClass('selected');
    });

    if(event.target.type != "radio") {

        var that = $(this).find('input:radio');

        that.attr('checked', !that.is(':checked'));

        if (that.is(':checked'))  {
        that.closest('table').addClass('selected');
    }
   else {
        that.closest('table').removeClass('selected');
}
    }
});
});

person xxstevenxo    schedule 20.06.2012    source источник


Ответы (2)


.parent().siblings() забирает другие страницы, потому что у вас нет div вокруг страницы 1, если вы добавляете, что это решает проблему http://jsfiddle.net/5YnBq/1/

person Gilsham    schedule 20.06.2012
comment
Большое спасибо! это была моя проблема: D - person xxstevenxo; 21.06.2012

Что ж, я не на 100% в этом, но попробуйте event.preventDefault ();

Я думаю, что он набирает обороты, поэтому, когда он нацелен на input: radio, он использует самую внешнюю таблицу, поэтому в основном он нацелен на все переключатели. Я не тестировал это, потому что скрипка не работала у меня после того, как я нажал продолжить, но попробуйте и посмотрите, что произойдет

person Huangism    schedule 20.06.2012