использование jquery для отключения ряда переключателей по требованию - PullRequest
1 голос
/ 30 апреля 2010

Я пытаюсь выполнить что-то похожее на Историю Википедии Страницу истории, динамически отключая переключатели в серии.

Т.е. ... если выбран № 4 во второй группе, то 1-4 из первой группы отключены и т. Д.

Я знаю, как отключить их по отдельности или в группе, но я не уверен, как это сделать в серии, скажем, 1-4:

Индивидуально:

$("#version_history input[id^=versions_2_3]:radio").attr('disabled',true);

или группа:

$("#version_history input[id^=versions_2]:radio").attr('disabled',true);

Входные данные называются версии_1_X и версии_2_X, где X обозначает некоторое число. 1..2..3 .. и т. Д.

Моя конечная цель - передать функцию переключателю, который нажал кнопку ..., а затем отключить все переключатели противоположной группы выше или ниже номера.

Ответы [ 2 ]

2 голосов
/ 30 апреля 2010

С учетом следующего HTML:

<div id="version_history">
   <div class="version_history_item">
       <input type="radio" name="original">
       <input type="radio" name="update">
       <span>description</span>
   </div>
   ...
</div>

Один из возможных подходов:

function updateVersionRadioButtonAvailability() {

    var versionHistoryElement = $('#version_history'),
        originalIndex = $('input[name=original]:checked', versionHistoryElement).parent('.version_history_item').index(),
        updateIndex = $('input[name=update]:checked', versionHistoryElement).parent('.version_history_item').index(),
        visibleStyle = { visibility: 'visible' },
        hiddenStyle = { visibility: 'hidden' };

    $('.version_history_item', versionHistoryElement).each(function(index) {
        $('input[name=original]', $(this)).css(index > updateIndex ? visibleStyle : hiddenStyle);
        $('input[name=update]', $(this)).css(index < originalIndex ? visibleStyle : hiddenStyle);
    });

}

$(document).ready(function() {
    $('#version_history input[name=original], #version_history input[name=update]').live('click', updateVersionRadioButtonAvailability);
    updateVersionRadioButtonAvailability();
});

Сухой код, поэтому ваш пробег может отличаться.

1 голос
/ 30 апреля 2010

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

Я не знаю, хотите ли вы отключить все из них, потому что не было бы возможности нажать их снова, поэтому я также добавил кнопку сброса.

Может быть, если вы уточнили немного больше, что именно вы хотите?

...