0

我已经尽可能多地尝试谷歌搜索,但我似乎无法找到答案。所以如果可以的话,请给我一些建议。

我刚刚学会了像这样包装我的函数(不知道这种技术叫什么对不起):

$(document).ready({
    myFunc.init();
});

var myFunc = {
    init: function() {
        // do a number of things
    }
};

我需要做的是在窗口大于一定大小时初始化函数,当窗口小于一定大小时删除函数。

在我看来,这应该是一种简单的方法来做这样的事情:

$(document).ready({
    myFunc.init();
});
$(window).resize(function(){
    if($(window).width() > 700) {
        myFunc.init();
    } else {
        // remove myFunc.init()
    }
});

我遇到的最接近的事情是 unbind/die,这是我想在这里使用的吗?如果是这样,我该如何使用它?请帮忙。

4

2 回答 2

2

您通常会这样做:

var myFunc = {
    I_ran : false,
    init  : function() {
        // do a number of things
        if (! this.I_ran ) {

            this.elem = $('<div>');
            this.elem.appendTo('body');

            this.I_ran = true; // avoid multiple calls, 
                               // as resize fires continously
        }
    },
    destroy: function() {
        if (this.elem.length) this.elem.remove();
        this.I_ran = false;
    }
}

$(document).ready(function() {
    $(window).on('resize', function() {

        if ($(this).width() > 700) {
            myFunc.init();
        }else{
            myFunc.destroy();
        }

    }).trigger('resize');
});
于 2013-07-16T05:13:04.623 回答
0

我认为你使用了错误syntaxdocument.ready它应该是这样的,

function test()
{
   if($(window).width() > 700) {
       myFunc.init();
}
$(document).ready(function(){
    test();
    $(window).resize(function(){
        test();           
    });
});

此外,如果您取消绑定,则无需取消绑定,因此在此处使用是正确的。functionnext timeinitialize againif condition

于 2013-07-16T04:59:13.937 回答