【问题标题】:How to get a jQuery click handler to fire when an attribute is checked programmatically?如何在以编程方式检查属性时触发 jQuery 单击处理程序?
【发布时间】:2015-09-28 11:40:57
【问题描述】:

我有两个 DropDownLists 开始隐藏:

$(window).load(function () {
    . . . other code elided for brevity

    $('[id$=ddlPayToIndividual]').hide();
    $('[id$=ddlPayToVendor]').hide();
});

...但是根据单击的相应单选按钮显示一个:

$(document).on("click", '[id$=rbPaymentToIndividual]', function () {
    if (this.checked) {
        $('[id$=ddlPayToVendor]').slideUp();
        $('[id$=ddlPayToIndividual]').slideDown();
    }
});

$(document).on("click", '[id$=rbPaymentToVendor]', function () {
    if (this.checked) {
        $('[id$=ddlPayToIndividual]').slideUp();
        $('[id$=ddlPayToVendor]').slideDown();
    }
});

当用户单击单选按钮(rbPaymentToIndividual 或 rbPaymentToVendor)时,这一切都有效;但是,当我以编程方式检查它时:

$(document).on("click", '[id$=rbPaymentForSelf]', function () {
    if (this.checked) {
        . . . other code elided for brevity
        $('[id$=rbPaymentToIndividual]').attr('checked', true);      
    }
});

...它没有。为什么?是否有一种变通方法可以让它认为程序化的属性操作等同于用户的直接参与?

【问题讨论】:

    标签: jquery radio-button html-select attr checked


    【解决方案1】:

    您可以在输入端手动触发change 事件:

    $('[id$=rbPaymentToIndividual]').trigger('change');
    

    正如@tin 指出的那样——这是设置属性的补充。

    【讨论】:

    • 附加或代替 attr('checked', true) ?
    • 除了@B.ClayShannon。当您以编程方式更改元素的值时,它们不会触发任何事件。
    【解决方案2】:

    您是否尝试过触发点击事件?

    $('[id$=rbPaymentToIndividual]').prop("checked", true).click();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      • 2013-07-26
      • 2013-05-15
      • 1970-01-01
      • 1970-01-01
      • 2016-06-30
      相关资源
      最近更新 更多