我有一些type =“radio”的输入:
<div style="margin:10px;"><input type="radio" name="cei" id="clike" /><label style="margin:0 10px" for="clike">like</label></div>
<div style="margin:10px;"><input type="radio" name="cei" id="ccomment" /><label style="margin:0 10px" for="ccomment">like</label></div>
<div style="margin:10px;"><input type="radio" name="cei" id="clink" /><label style="margin:0 10px" for="clink">like</label></div>
并且当检查每个函数时,更改函数会执行一些操作:
$('input:radio[name="cei"]').change(
function(){
if ($(this).is(':checked') && $(this).next().html() == 'link')
$('#clink-val').removeAttr('disabled');else $('#clink-val').attr('disabled','disabled');
if ($(this).is(':checked') && $(this).next().html() == 'Multiple Choices')
$(this).closest('fieldset').find('.multiplechoices-item').slideDown(); else $(this).closest('fieldset').find('.multiplechoices-item').slideUp();
});
到此为止,代码完美无缺。 现在,上面的单选按钮是通过服务器端代码生成的,对于用户来说可能只有2个无线电,而对于另一个用户可能只有5个无线电。所以我想要检查第一台收音机。我试过了:
$('input:radio[name="cei"]').first().attr('checked','checked');
和
$('input:radio[name="cei"]').first().click();
虽然上述两个代码都设置了第一个收音机的已检查属性,但对于它们都没有,$('input:radio[name="cei"]').change()
不会触发。
答案 0 :(得分:2)
更改值后,您可以触发更改事件。
$('input:radio[name="cei"]').first().attr('checked','checked').change();
$('input:radio[name="cei"]').change(function(){
console.log('changed');
if ($(this).is(':checked') && $(this).next().html() == 'link')
$('#clink-val').removeAttr('disabled');else $('#clink-val').attr('disabled','disabled');
if ($(this).is(':checked') && $(this).next().html() == 'Multiple Choices')
$(this).closest('fieldset').find('.multiplechoices-item').slideDown(); else $(this).closest('fieldset').find('.multiplechoices-item').slideUp();
});
$('input:radio[name="cei"]').first().attr('checked','checked').change();
$('input:radio[name="cei"]').eq(1).attr('checked','checked').change();
$('input:radio[name="cei"]').eq(1).attr('checked','checked').change();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div style="margin:10px;">
<input type="radio" name="cei" id="clike" /><label for="clike">like</label>
</div>
<div style="margin:10px;">
<input type="radio" name="cei" id="ccomment" /><label for="ccomment">like</label>
</div>
<div style="margin:10px;">
<input type="radio" name="cei" id="clink" /><label for="clink">like</label>
</div>
&#13;
答案 1 :(得分:1)
您需要触发更改事件
$('input:radio[name="cei"]').first().prop('checked',true).change();
答案 2 :(得分:0)
而不是
$('input:radio[name="cei"]').change(function(){})
试
$('body').on('change','input:radio[name="cei"]',function(){})
dinamically添加的元素需要像这样的事件监听器