我在事件处理程序上使用jQuery one()
方法触发一次然后取消注册。类似的东西:
$(".main").one('mousedown', '.resizeBar', function (e) { /* my code */ });
然后一些ajax(实际上是.net回发)重置了大部分页面(没有重新加载),我想再次设置事件处理程序。有没有办法重新设置one()
事件处理程序再次处于活动状态?以这种方式手动重新触发它显然不起作用:
$(".main .resizeBar").trigger("mousedown");
答案 0 :(得分:15)
将该代码包装在函数
中function mainMouseDownOne() {
$(".main").one('mousedown', '.resizeBar', function (e) { /* my code */ });
}
$(document).ready(function(){
mainMouseDownOne();
.ajax({
...
success: function() {
...
mainMouseDownOne();
}
})
});
答案 1 :(得分:4)
我建议在函数调用中包装one()方法bind,然后在页面加载时调用该函数(绑定初始事件处理程序),并在Ajax调用成功时再次调用。
var bindEvents = function(){
$(".main").one('mousedown', '.resizeBar', function (e) { /* my code */ });
};
$(function(){ bindEvents(); }); // call the one() method on page load.
$.post(pageURL, function(data){
bindEvents(); // As an example, after some sort of Ajax or post-reset event.
});