jQuery绑定多按钮点击事件清空textarea无效,求无冗余代码方案
解决jQuery多按钮绑定同一点击事件的问题
嘿,我明白你的困扰了!你遇到的问题其实是jQuery选择器的写法错误导致的,咱们一步步来解决:
问题根源
你原来的代码里用了这个选择器:
$('#reject_loan_modal-no', '#close-loan-rejection')
这种写法是jQuery的上下文选择器,它的意思是:在#close-loan-rejection这个元素内部,查找#reject_loan_modal-no元素,而不是同时选中这两个独立的按钮。这就是为什么分开写两个.on('click')能生效,合并这么写却不行的原因。
两种解决方法(都能避免代码重复)
方法1:修正多元素选择器的写法
想要同时选中两个独立元素,只需要把两个选择器放在同一个字符串里,用逗号分隔就行:
$('#reject_loan_modal-no, #close-loan-rejection').on('click', function(e) { e.preventDefault(); $('#loan-rejection-modal').modal('hide'); $('#clientservice-loan_approval_comment').val(''); });
这样就能一次性给两个按钮绑定同一个点击事件,逻辑完全复用。
方法2:把重复逻辑抽成独立函数(更推荐,易维护)
如果以后你的逻辑可能需要修改,或者还要给更多按钮绑定相同行为,把逻辑封装成独立函数会更灵活:
// 先定义复用的处理函数 function clearCommentAndCloseModal(e) { e.preventDefault(); $('#loan-rejection-modal').modal('hide'); $('#clientservice-loan_approval_comment').val(''); } // 给两个按钮分别绑定这个函数 $('#reject_loan_modal-no').on('click', clearCommentAndCloseModal); $('#close-loan-rejection').on('click', clearCommentAndCloseModal);
这种方式的好处是:以后如果要调整逻辑(比如增加弹窗提示、修改要清空的元素),只需要修改clearCommentAndCloseModal函数即可,不用在多个绑定点重复修改。
额外提醒
别忘了确保你的代码是在DOM加载完成后执行的,比如把代码放在$(document).ready()里,或者放在页面的底部(所有DOM元素之后),否则可能会因为按钮还没加载出来,导致事件绑定失败哦!
内容的提问来源于stack exchange,提问作者HELPME
相关产品推荐
相关产品推荐

