我想为 jQuery 提供一个扩展,以便我重新绑定事件处理程序。这是因为事件处理程序在使用 ajax 加载局部视图时被绑定,并且它们被绑定到$(document)
以便它们在页面上触发。
但是,如果再次下载部分时页面没有刷新,我现在会绑定两个事件。等等。
因此,我创建了一个扩展,它将取消绑定先前的事件并重新添加它。
这是一个合理的解决方案吗?
jQuery.fn.extend({
offOn: function (types, selector, data, fn) {
this.off(types, selector, fn);
this.on(types, selector, data, fn);
}
});
在通过我的主页上的点击事件加载的部分中使用这样的方法。
<script type="text/javascript">
$(function() {
$(document).offOn('click', '#my-details-section a.delete-row', onDeleteRow);
function onDeleteRow() { // do something }
});
</script>