我不知道如何实现上述目标,我试着在下面解释一下。
我有一个if else声明
resizeDiv = function() {
if (vpw < 600) {
//do something 1
}
else
{
//do something 2
}
};
$(document).ready(resizeDiv);
$(window).bind('resize', resizeDiv);
正如你从上面所看到的那样,我必须调整页面的大小和加载,我的问题是每当我调整页面大小时它们都会触发(从上面的代码来看,这是正确的。
我需要发生的事情就是说VPW是&lt; 600它运行//只做一次1如果我再次调整我的浏览器它不会像已经完成的那样运行。
然后如果我调整大小到&gt; 600 //做一些2触发器然后如果我调整大小到<600 //做一些事情1只会再次触发一次生病尝试用代码解释下面这个。
resizeDiv = function() {
if (vpw < 600) {
//do something 1
//disable do something 1
//enable do something 2
}
else
{
//do something 2
//disable do something 2
//enable do something 1
}
};
$(document).ready(resizeDiv);
$(window).bind('resize', resizeDiv);
希望这一切都有意义,有人可能会指出我正确的方向来实现我需要发生的事情
Ragards
答案 0 :(得分:5)
您可以使用像
这样的简单状态var state;
resizeDiv = function () {
if (vpw < 600 && state != 1) {
//do something 1
state = 1;
console.log('less', state)
} else if (vpw >= 600 && state != 2) {
//do something 2
state = 2;
console.log('more', state)
}
};
$(document).ready(resizeDiv);
$(window).bind('resize', resizeDiv);
演示:Fiddle
答案 1 :(得分:1)
要完成你想要的任务,你必须跟踪当前的状态&#34;并做相应的事情。
我们假设您有两个州state1
和state2
,那么当州目前为something2
时你只想做state1
,而副反之亦然。它有点类似于保存你已经完成了#34; something2
。
在代码中,我会这样做:
var state = "nostate"; // you could also set this to the state it starts in.
resizeDiv = function() {
if (vpw < 600 && state != "state2") {
//do something 1
//enable do something 2
state = "state2";
} else if(vpw >= 600 && state != "state1") {
//do something 2
//enable do something 1
state = "state1";
} else {
// do nothing.
}
};
$(document).ready(resizeDiv);
$(window).bind('resize', resizeDiv);
答案 2 :(得分:1)
我建议使用$(window).resize();
和$(document).ready()
。但是你必须在它们内部运行该函数。 $(window).resize();
表示在调整浏览器大小时,$(document).ready();
表示页面加载时。
首先,定义调整大小的函数
function resizeDiv(){
var vpw = $(window).width; // if vpw is based on whole page width
if (vpw < 600) {
alert('Less than 600px');
//do something 1
}
else
{
alert('More than 600px');
//do something 2
}
}
然后执行
中的功能$(document).ready(function(){
resizeDiv();
// you can explain other function when your page is READY
});
$(window).resize(function(){
resizeDiv();
// also here for other function when your page is on RESIZE
});
注意:
确保您的网页未定义$(document).ready();
或$(window).resize();
。
因为定义了导致错误的多个$(document).ready();
或$(window).resize();
。
答案 3 :(得分:0)
使用jQuery的.one
函数:http://api.jquery.com/one/顾名思义,它只执行一次函数。
否则,只需使用布尔变量来记录已完成的事情:
var doneOnce = false
doSomething(){
/* stuff stuff stuff */
doneOnce = true;
}