Как найти связь между переключателем и меткой? - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть этот ярлык:

<label id="options_31409_3label" for="options_31409_3"><span>some text</span></label>

Как видите, внутри метки есть текст в метке. Теперь у меня также есть переключатель, который слева от метки:

<input id="options_31409_3" class="radio" type="radio" value="72058" name="options[31409]" onclick="xyz()">...</input>

Это одно радио и одна метка, но у меня есть несколько радио кнопок и меток на одном сайте. Теперь из этих N меток и радиокнопок я должен идентифицировать одну пару и сделать с ней несколько прототипов. Пара имеет разные идентификаторы при каждой загрузке сайта, единственное, что остается, это текст внутри промежутка. Есть ли способ получить метку и радиокнопку, если внутри промежутка есть «какой-то текст»? Я могу использовать Prototype, если это поможет.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 23 февраля 2012

Атрибут label s for, если используется правильно, должен иметь то же значение, что и атрибут input s id. Таким образом, вы можете легко узнать, какие label принадлежат каким input следующим образом:

$$('label').each(function () {
    var label = this;
    var input = document.getElementById(label.getAttribute('for'));
});
2 голосов
/ 23 февраля 2012

Поскольку вы знаете, что идентификатор метки состоит из идентификатора ввода + метка, вы можете использовать, например, следующий код для поиска пары:

$$('input[type=radio]').each(function() 
    var input = this;
    var label = $(this.id + 'label');
    // do something for input and label
});
1 голос
/ 23 февраля 2012

Я бы предпочел улучшить фрагмент jholser для работы со всеми метками, а не только с теми, в имени которых есть метка.

$$('input[type=radio]').each(function(input) 
{
    // Several labels may link to the same input
    $$('label[for="' + input.identify() + '"]').each(function(label)
    {
        // do something for input and label
    });
});
...