我想要做的总结:我有一个无线电盒的列表(我使用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中是否存在这样的功能吗?
答案 0 :(得分:2)
您可以在现有元素集合上使用.filter(“:checked”):
var radios = $(this).parent().find(":radio");
if (radios.length > 0)
{
var value = radios.filter(":checked").val();
//...
}
有关过滤方法的详情,请访问:http://api.jquery.com/filter/
答案 1 :(得分:0)
问题解决了:正如rjz所建议的那样,它只需要filter()函数:
$(':checkbox').click(function(){
var radioBoxes = $(this).parent().find(":radio");
if (radioBoxes.length > 0)
{
var value = radioBoxes.filter(":checked").val();
//...
}
else
{
//...
}
});