16

我有一对收音机,我在 pages .ready 事件上使用 bind() 为其分配了一个函数。然后,在同一个就绪事件中,我检查另一个输入的值,如果它的值为“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
    }

});

...

-->更完整的代码见这里

问题是,如果满足条件,确实会检查收音机,但绑定功能togglePlazo()不会触发......

如果稍后我手动单击单选按钮,该功能会被触发,并且跨度会切换。它仅在使用 jQuery 进行的初始“检查”中,尽管收音机发生更改,但该功能不会触发。

我不知道我错过了什么,也许我应该绑定更多事件而不是更改或单击...我只是找不到我做错了什么。

注意:我使用的是 jQuery 1.4.2,但小提琴设置为使用 1.6.4(它没有 1.4.2 作为选项)

4

2 回答 2

44

checked只需在设置属性时触发点击事件。

$("#fpago2").attr('checked', true).trigger('click');

更改元素上的属性不会触发更改的事件......既不是通过本机 setAttribute 也不是使用 jQuery 的 attr。

于 2013-10-23T15:33:17.627 回答
0

如果您在imageTypeToggleconsole.log('yes');函数内部编写,您将在控制台中看到页面加载将不会打印。你需要触发如下yes

$(function () {
    $(window).load(function(){
    $("[name=image_type]").on("change",imageTypeToggle).trigger('click');
 })
于 2021-06-22T06:58:17.380 回答