我有这个代码,工作正常:
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 });
答案 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 });