在jQuery中删除$(window).resize事件

Bis*_*ker 40 javascript jquery resize

我正在开发的页面的一部分需要在用户单击按钮时将$(窗口).resize事件添加到div,以便在使用窗口调整其大小并将其固定为原始大小之间切换:

function startResize() {
    $(window).resize(function() {
        $("#content").width(newWidth);
        $("#content").height(newHeight);
    });
}
Run Code Online (Sandbox Code Playgroud)

我无法解决的是,当再次单击该按钮时,如何"关闭"此事件,以便内容停止调整大小.

function endResize() {
    // Code to end $(window).resize function
    $("#content").width(originalWidth);
    $("#content").height(originalHeight);
}
Run Code Online (Sandbox Code Playgroud)

任何有关这方面的帮助将不胜感激.

Esa*_*ija 88

function endResize() {
    $(window).off("resize");
    $("#content").width(originalWidth);
    $("#content").height(originalHeight);
}
Run Code Online (Sandbox Code Playgroud)

请注意,这非常突兀,可能会破坏其他代码.

这是更好的方法:

function resizer() {
    $("#content").width(newWidth);
    $("#content").height(newHeight);
}

function startResize() {
    $(window).resize(resizer);
}

function endResize() {
    $(window).off("resize", resizer);
}
Run Code Online (Sandbox Code Playgroud)

  • 这是有效的,因为正如在[文档](http://api.jquery.com/resize/)中所说,`resize`只是`$(window).on("resize",resizer)的快捷方式. ,为了代码对称,我宁愿使用它. (2认同)

小智 55

function startResize() {
   $(window).on("resize.mymethod",(function() {
     $("#content").width(newWidth);
     $("#content").height(newHeight);
   }));
}

function endResize() {
   $(window).off("resize.mymethod");
}
Run Code Online (Sandbox Code Playgroud)

在查询方法上使用命名空间将允许仅为您的方法关闭resize事件.

  • 更正:现在这对我有用:$(window).bind('resize.popupNamespace',popup); ~~还~~ $(窗口).unbind('resize.popupNamespace'); 命名空间似乎是避免无意中删除触发器的最安全方法. (2认同)