5

我在one()事件处理程序上使用 jQuery 方法触发一次,然后自行注销。就像是:

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

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

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

2 回答 2

19

只需将该代码包装在一个函数中

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

$(document).ready(function(){
    mainMouseDownOne();

    .ajax({
        ...
        success: function() {
            ...
            mainMouseDownOne();
        }
    })
});
于 2012-08-03T17:40:34.217 回答
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.
});
于 2012-08-03T17:43:20.523 回答