使用jquery更改按钮事件的绑定

时间:2014-04-01 19:41:48

标签: javascript jquery html javascript-events

我已将事件绑定到点击图标上。该事件更改页面上按钮的ID。我希望将一个新事件绑定到该新id,并将绑定到旧id的现有事件解除绑定。我该怎么做?

我可以从Firebug看到单击图标时按钮ID成功更改。但是,当我查看POST时,我看到id为“Final_Approval”的隐藏字段的值为“Approved”,这告诉我发生了与原始按钮id绑定的事件,我不希望这样。我的所有jquery都在文档准备好之内。

原始按钮:

<button id="btn-final-approval-no-review" class="btn btn-warning" type="submit">Final Approval</button>

原始事件与该ID相关联:

$('[id^="btn-final-approval"]').click(function () {
    $("#Final_Approval").val("Approved");
});

单击图标时触发的事件:

$("#add-vendor-item").click(function () {
   $('#btn-final-approval-no-review').attr('id', 'btn-vendor-rep-review2');
}

我想要举办的新活动:

$("#btn-vendor-rep-review2").click(function () {
    $("#ItemRequestStatusId").val("@Portal.BusinessModel.Entities.ItemRequestStatusId.VendorRepReview");
});

3 个答案:

答案 0 :(得分:0)

要将事件绑定到动态更改的元素,您需要将委派on()一起使用:

$(document).on('click', '[id^="btn-final-approval"]', function() {
    $("#Final_Approval").val("Approved");
});

正如adeneo所说,你可能不应该移动ID,你应该使用类。但同样的想法也适用,您只需要在on()调用中更改选择器。

答案 1 :(得分:0)

使用委托动态绑定点击事件。

$("body").on("click","#btn-vendor-rep-review2", function () {    
    $("#ItemRequestStatusId").val("@Portal.BusinessModel.Entities.ItemRequestStatusId.VendorRepReview");
});

答案 2 :(得分:0)

$(document).on('click', '#finalApproval', function() {

if($(this).hasClass('first')){
    $(this).removeClass('first');
    //first action to be preformed    
}else{
  //second action to be preformed.
}


});

然后只需在页面加载时将类first添加到按钮。

如果您需要切换回来,您可以在第二个动作中重新添加类first以进行预制区域 的修改

重新阅读问题后,您可能无法使用this - 只需替换相关项的id / class,并将if / else语句添加到该项的处理程序中。