窗口调整大小时得到错误的值

时间:2014-12-02 13:06:13

标签: javascript jquery

首先,我得到窗口宽度减去一些东西然后将它分配给变量

其次,我调整窗口大小并希望获得当前窗口宽度减去某些内容的值

但是我得到了错误的价值,它会警告两个值一个是对的而另一个是错的,我不知道为什么以及如何解决它,帮助我,thx

我的HTML代码是

<p class="test">click me get value</p>

js是

(function(){

test();

$(window).resize(function(){
test();
});

}());



function test() {
    var t = $(window).width()-74;
    alert('one ' +t);
    $(document).on('click', '.test',{t: t}, get);
}
function get(event) {
    var l = event.data.t
    alert('two ' +l)
}

小提琴版是     http://jsfiddle.net/dxcqcv/xetbhwpv/1/

1 个答案:

答案 0 :(得分:1)

我不确定您期望获得的值是什么,但请查看有关jquery api的resize函数文档:

http://api.jquery.com/resize/

  

调整大小处理程序中的代码绝不应该依赖于调用处理程序的次数。根据实施情况,调整大小事件可以在调整大小正在进行时连续发送(在Internet Explorer和基于WebKit的浏览器(如Safari和Chrome)中的典型行为),或者仅在调整大小操作结束时发送一次(典型行为在其他一些浏览器,如Opera)。

正如您所看到的,某些浏览器只会在调整大小结束时调用resize,但其他一些浏览器会在调整大小的过程中调用您的函数。这意味着当您没有调整大小时以及在调整大小操作时,您将从通话中获得不同的值。

我对您的代码进行了一些更改,以便变得更干净。请使用开发者控制台(在浏览器上按F12)查看此jsfiddle:

http://jsfiddle.net/xetbhwpv/7/

$(document).ready(function(){
    test();
    $(window).resize(function(){
        test();
    });
});

function test() {
    var t = $(window).width() - 74;
    console.log('one ' + t);
    $('.test').off('click');
    $('.test').on('click', {t: t}, getInfo);
}
function getInfo(event) {
    var l = event.data.t
    console.log('two ' +l)
}

正如您现在所看到的,最后two XX条消息等于上一条resize条消息。