2012-03-01 46 views
0

我想要做的事情總結:我收到了一個收音機列表(我使用了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 
} 

那麼,有沒有我可以在選項框運行,以獲得檢查收音機的任何選擇?

如果您想了解更多詳情,請點擊這裏。 我已經實現包含一些複選框有單選按鈕列表靠近他們控制:

[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中?對元素的現有的集合:

+0

使用過濾器(「:選中」)無線電收集由rjz的建議只是正常工作!問題解決了。 – Walid 2012-03-01 00:29:35

回答

2

你可以使用.filter( 「選中」):

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

if (radios.length > 0) 
{ 

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

在過濾器方法的skivvy,請訪問:http://api.jquery.com/filter/

+0

工程太棒了!沒有過濾器的東西 - 謝謝! – Walid 2012-03-01 00:25:24

0

問題解決了:通過的建議rjz,它只是需要過濾器()函數:

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