Подтвердить что ты не робот

Получить текст метки, принадлежащий проверенному переключателю

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

$(document).ready(function(){
  $("body").on("click", "#btn", function(){

    var radios = $("input[type='radio']");

    $.each(radios, function(index, element){
      if ($(this).prop("checked") === true){

        var radioID = element.id;
        $("label").each(function(ind, elm){

          if ($(elm).prop("for") == radioID){
            console.log($(elm)); 
          }

        });
      }
    });
  });
});

jsbin

По какой-либо причине, которая просто распечатывает

  

-     [11: 07: 13.834] ({0: ({}), контекст: ({}), длина: 1}) @http://jsbin.com/uniwum/2/edit:71

  

в консоли. Что я сделал неправильно?

4b9b3361

Ответ 2

Попробуйте следующее:

$('#btn').click(function(){
    $('table input[type="radio"]').each(function(){
        if($(this).is(':checked')){
        console.log($(this).parent().next().find('label').text());
        }
    });
});

Пример jsFiddle

Обновление. Поскольку они являются переключателями, еще более быстрый способ:

$('#btn').click(function(){
    console.log( $('table input[type="radio"]:checked').parent().next().find('label').text() );
});

Пример jsFiddle

Ответ 3

Вам нужно вызвать функцию .text(), чтобы получить текст элемента после его выбора, например: $(elm).text().

В этом случае, поскольку elm уже является DOM node, вы можете вызвать plain elm.innerHTML для того же результата.

Ответ 4

Попробуйте этот код:

$("td",$(":checked").parent().parent()).text()

Ссылка для jsFiddle http://jsfiddle.net/rQX7H/2/

Ответ 5

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

Метод 1:       Назначьте настраиваемые атрибуты данных для переключателя с тем же текстом, который должен отображаться.

    <input id="radio4" name="radios1" type="radio" value="4" data-value="radio 4" /> radio 4
    <input id="radio5" name="radios1" type="radio" value="4" data-value="radio 5"/> radio 5
    <input id="radio6" name="radios1" type="radio" value="4" data-value="radio 6"/> radio 6
    <input type="button" id="btn" value="Get from data-value" />

Подробнее о пользовательских атрибутах данных: Пользовательские данные - * Атрибуты

Script для получения текста:

$(document).on("click", "#btn", function () {
            var value = $("input[name=radios1]:checked").attr("data-value");
            alert(value);
        });

Метод 2:       Преобразуйте html для переключателей, чтобы назначить одно и то же свойство [name] для всех из них, затем поместите поля "label" для переключателей, как показано ниже

<input id="radio1" name="radios" type="radio"/>
        <label for="radio1"> radio 1</label>
    <input id="radio2" name="radios" type="radio"/>
        <label for="radio2"> radio 2</label>
    <input id="radio3" name="radios" type="radio"/>
        <label for="radio3"> radio 3</label>
    <input type="button" id="btn1" value="Get from Label" />

Script для получения текста:

$(document).on("click", "#btn1", function () {
        var idVal = $('input[name=radios]:checked').attr("id");
        $("label[for='"+idVal+"']").text();
        //If you have the radio button in HTML table structure write it as below
        $('input[name=radios]:checked').parent().find('label').text();
    }

Надеюсь, что это поможет:)

Ответ 6

$("input[type='radio']:checked").parent().text()