重置jQuery one()以便它再次触发

时间:2012-08-03 17:37:22

标签: jquery

我在事件处理程序上使用jQuery one()方法触发一次然后取消注册。类似的东西:

$(".main").one('mousedown', '.resizeBar', function (e) { /* my code */ });

然后一些ajax(实际上是.net回发)重置了大部分页面(没有重新加载),我想再次设置事件处理程序。有没有办法重新设置one()事件处理程序再次处于活动状态?以这种方式手动重新触发它显然不起作用:

$(".main .resizeBar").trigger("mousedown");

2 个答案:

答案 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.
});