jQuery: проверяется значение из имени переменной или $ (this) - PullRequest
3 голосов
/ 31 января 2011

Если у меня есть несколько радиокнопок:

<input type="radio" name="test" value="apple"> Apple<br/>
<input type="radio" name="test" value="banana" CHECKED> Banana<br/>
<input type="radio" name="test" value="carrot"> Carrot<br/>

, и я определяю радиогруппу в jQuery с помощью

var test = $('input:radio[name="test"]')


Как получить значение проверенногоэлемент, основанный на тесте переменных без переписывания

var test_val = $('input:radio[name="test"]:checked').val();

Я пробовал оба

$(test):checked.val();
test:checked.val();

И как часть функции изменения я также пробовал это:

$(test).change(function() {
    if ($(this):checked.val() == 'no') {
        $('#featured').stop().fadeOut();
    } else if ($(this):checked.val() == 'yes') {
        $('#featured').stop().fadeIn();
    }
});

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

PS
Если IE8 не 't поддерживает селектор :checked, что я могу использовать вместо этого?

Ответы [ 4 ]

7 голосов
/ 31 января 2011

Вы можете использовать .filter() help :

test.filter('input:checked')

.filter() также поддерживает обратный вызов:

test.filter(function() {
    return this.name === 'test' && this.checked
});

Я не знал, что селектор :checked не работает с IE8.Если это правда, последний пример должен работать (прямой доступ к узлу expando)

0 голосов
/ 31 января 2011

Startibg из var test, вы можете использовать функцию .filter (), как показано в этом jsFiddle

var test = $('input:radio[name="test"]');
alert(test.filter(':checked').val());
0 голосов
/ 31 января 2011

попробуйте это ...

$(test).change(function() {
 if ($(this).is(':checked').val() == 'no'){
   $('#featured').stop().fadeOut();
 } else if ($(this).is(':checked').val() == 'yes'){
  $('#featured').stop().fadeIn();
 }
});
0 голосов
/ 31 января 2011

Вы пытаетесь смешать «синтаксис CSS» с синтаксисом JavaScript.Это не сработает.

Вы можете использовать метод jQuery filter() для ограничения элементов, выбранных с помощью предыдущего запроса jQuery:

var test = $('input:radio[name="test"]')

var test_val = test.filter(":checked").val();
...