我已将事件绑定到点击图标上。该事件更改页面上按钮的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");
});
答案 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语句添加到该项的处理程序中。