我有一对无线电,我在页面.ready事件上使用bind()为其分配了一个函数。 然后,在同一个ready事件中,我检查另一个输入的值,如果它的值是“1”,我在页面加载时预选第二个单选按钮。 这是一个片段。
<input type="radio" name="fpago" id="fpago1" value="1" />one
<input type="radio" name="fpago" id="fpago2" value="2" />two
...
$(document).ready(function() {
$("#myspan").hide();
$("#fpago1, #fpago2").bind('change click',function(){
togglePlazo();
});
//initial condition to preselect radio #2
grupo = $("#id_grupo").val();
if(grupo != '0'){
$("#fpago2").attr('checked', true); //checks the radio, but doesn't trigger function
}
});
...
- &GT; see here获取更完整的代码
问题在于,如果满足条件,则检查无线电,但绑定功能togglePlazo()
不会触发......
如果稍后我手动点击单选按钮,该功能会被触发,并且跨度切换。它仅在使用jQuery进行的初始“检查”时,尽管无线电发生了变化,但该功能仍未触发。
我不知道我错过了什么,也许我应该绑定除了更改或点击之外的更多事件......我只是找不到我做错了什么。
注意:我使用的是jQuery 1.4.2,但小提琴设置为使用1.6.4(它没有1.4.2作为选项)
答案 0 :(得分:38)
只需在设置checked
属性时触发点击事件。
$("#fpago2").attr('checked', true).trigger('click');
更改元素上的属性不会触发已更改的事件...既不是本机setAttribute,也不是使用jQuery的attr。
答案 1 :(得分:0)
如果您在 imageTypeToggle 函数中写入 console.log('yes');
,并且您将在控制台中看到页面加载时 yes
不会打印。你需要像下面这样触发
$(function () {
$(window).load(function(){
$("[name=image_type]").on("change",imageTypeToggle).trigger('click');
})