如果没有选择单选按钮,更好的jQuery代码选择?

时间:2010-02-25 16:42:29

标签: jquery

我有这个代码,工作正常:

if ( $('table#attribute_Size input.quantitycheckbox:checked').length == 0 )
    $('table#attribute_Size input.quantitycheckbox:first').attr({ checked: true });

正如你所看到的,它很长,大部分选择器都会重复。是否有一个简洁的缩短它?我试过这个但是它不起作用(我假设它正在查看嵌套元素而不是当前选择器)。

var $sizeRadios = $('table#attribute_Size input.quantitycheckbox');
if ( $(':checked', $sizeRadios).length == 0 )
    $(':first', $sizeRadios).attr({ checked: true });

4 个答案:

答案 0 :(得分:3)

你可以尝试一下......它有点短。我没有测试但应该工作。

var $sizeRadios = $('#attribute_Size input.quantitycheckbox');
if ( !$sizeRadios.is(":checked") )
    $sizeRadios.eq(0).attr("checked", true);

答案 1 :(得分:0)

您可以通过删除每个选择器开头的“表格”来缩短它。它是100%不必要的,实际上减慢了jQuery。你也可以像这样缓存表jQuery对象:

var $table = $('#attribute_Size');
if ($('input.quantitycheckbox:checked', $table).length == 0 )
    $('input.quantitycheckbox:first', $table).attr('checked', true);

答案 2 :(得分:0)

你也可以写:

var $table = $('#attribute_Size');
if (!$table.find('input.quantitycheckbox').is(':checked'))
  $table.find('input.quantitycheckbox:first').attr('checked', true);

不是真的“更好”或任何东西,只是一种不同的风格。

[编辑]哦,我喜欢@Lindsay更好。

答案 3 :(得分:0)

一个选择查询:

$('#attribute_Size:not(:has(input.quantitycheckbox:checked)) input.quantitycheckbox:first').attr({ checked: true });