当元素被另一个元素更改时,onchange事件不起作用

时间:2014-04-22 09:42:28

标签: jquery onclick onchange

我有一个带onChange事件的复选框和一个选中并取消选中此复选框的按钮。 我手动检查和取消选中时会触发该事件。但是,当我按下按钮以更改复选框的状态时,不会触发任何事件。

您可以在此处查看示例:http://jsfiddle.net/7Nws8/7/

<input type="checkbox" id="1">
<input type="button" id="2" value="click">

按下按钮时,您是否有想要触发事件的想法。

问候

6 个答案:

答案 0 :(得分:1)

您需要在设置复选框的change状态后触发checked事件:

$(document).on("click","#2",function()
{
    if($("#1").is(":checked") == true)
    {
         $("#1").prop('checked', false).change(); // or .trigger('change')
    }
    else
    {
        $("#1").prop('checked', true).change(); // or .trigger('change')
    }
})

<强> Updated Fiddle

另请注意,id以数字开头是无效的HTML。您可以参考 here 获取更多信息

答案 1 :(得分:0)

您可以使用$("#1").trigger("change")触发更改事件并切换点击prop("checked", !$("#1").prop("checked")。请尝试:

 $(document).on("click","#2",function()
 {
   $("#1").trigger("change").prop("checked", !$("#1").prop("checked"));
 });
 $(document).on("change","#1",function()
 {
  alert("changed")
 });

<强> Working Demo

答案 2 :(得分:0)

只需添加trigger

即可
$(document).on("click","#2",function(){

    if($("#1").is(":checked") == true) { 
       $("#1").prop('checked', false); 
    } else {
       $("#1").prop('checked', true);
    }
    $('#1').trigger('change');
});

请参阅此FIDDLE

答案 3 :(得分:0)

你可以点击点击:

$(document).on("click","#2",function()
{
    $('#1').click();
});
$(document).on("change","#1",function()
{
    alert("changed");
});

The demo.

答案 4 :(得分:0)

更改属性值后触发事件:

$(document).on("click", "#2", function () {
    var checkboxEl = $('#1');
    checkboxEl.prop('checked', !checkboxEl.is(":checked")).change()
});

$(document).on("change", "#1", function () {
    alert("changed");
});

缓存jQuery对象也很好。

答案 5 :(得分:-2)

而不是做

 $("#1").prop('checked', false);

你可以这样做:

 $("#1").click();

JsFiddle:http://jsfiddle.net/hWhg3/