Селектор, чтобы получить проверенное радио в списке радио, которое я уже получил - PullRequest
0 голосов
/ 01 марта 2012

Сводка того, что я пытаюсь сделать: у меня есть список радиоблоков (я получил его с помощью селектора jquery), и я хотел бы получить тот, который проверяется в этом списке, без повторной оценки первого селектора.Пример:

var radioBoxes = $(this).parent().find(":radio");
if (radioBoxes.length > 0)
{
    var radioBoxValue = $(this).parent().find(":radio:checked");
    //Do something with checked radio value
}
else
{
    //I found no radio so to something else
}

Итак, есть ли какой-нибудь селектор, который я мог бы запустить на radioBoxes , чтобы получить проверенное радио?

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

    [x] Java   ( )1  (x)2  ( )3
    [x] Ajax   ( )1  ( )2  ( )3

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

    [x] Developper / Programmer
    [ ] Technical Analyst

Я бы не хотел делать следующее:

$(':checkbox').click(function(){
    if ($(this).parent().find(":radio").length > 0)
    {
        //I am a checkbox who has radios near to me,
        //I want to known which radio is checked if any
        var value = $(this).parent().find(":radio:checked").val();
        //...
    }
    else
    {
        //I am a checkbox who has no radio near to me
        //...
    }             
});

Поскольку я не люблю оценивать как

$(this).parent().find(":radio")

, так и

$(this).parent().find(":radio:checked")

Я хотел бы что-то вроде:

$(':checkbox').click(function(){
    var radioBoxes = $(this).parent().find(":radio");
    if (radioBoxes.length > 0) 
    {
        var value = radioBoxes.has(":checked");
        //...
    }
    else
    {
        //...
    }
});

Но это не работает.

Кто-нибудь знает, существует ли такая функция в jquery?

Ответы [ 2 ]

2 голосов
/ 01 марта 2012

Вы можете использовать .filter (": флажок") для существующей коллекции элементов:

var radios = $(this).parent().find(":radio");

if (radios.length > 0)
{

    var value = radios.filter(":checked").val();
    //...
}

Скивви по методу фильтра доступна по адресу: http://api.jquery.com/filter/

0 голосов
/ 01 марта 2012

Проблема решена: как подсказывает rjz, ей просто нужна функция filter ():

$(':checkbox').click(function(){
    var radioBoxes = $(this).parent().find(":radio");
    if (radioBoxes.length > 0) 
    {
        var value = radioBoxes.filter(":checked").val();
        //...
    }
    else
    {
        //...
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...