TrueまたはFalseになるまで、私はいくつかの助けをしてください必要、解決策を見つけるのに苦労しています:これは単純な例である:ここでは一度条件が
function ifTrueInitiateOnce() {
console.log("True function should be initiated/triggered Once");
}
function ifFalseInitiateOnce() {
console.log("False function should be initiated/triggered Once");
}
$(window).resize(function() {
if ($(window).width() > 767) {
ifTrueInitiateOnce()
} else {
ifFalseInitiateOnce()
});
は、私がしようとしています、詳細なコードです修正する:
var enteredMobileView = false;
var enteredDesktopView = false;
var delay = (function() {
var timer = 0;
return function (callback, ms) {
clearTimeout(timer);
timer = setTimeout(callback, ms);
};
})();
function getWinSize() {
if ($(window).width() > 767) {
enteredDesktopView = true;
enteredMobileView = false;
} else {
enteredDesktopView = false;
enteredMobileView = true;
}
}
getWinSize();
$(window).resize(function() {
delay(function() {
getWinSize();
}, 500);
});
if (enteredDesktopView) {
enteredDesktopView = false;
ifDesktopInitiateOnce();
}
if (enteredMobileView) {
enteredMobileView = false;
ifMobileInitiateOnce()
}
function ifDesktopInitiateOnce() {
console.log("DESKTOP True function should be initiated/triggered Once");
}
function ifMobileInitiateOnce() {
console.log("MOBILE True function should be initiated/triggered Once");
}
私はそれを正しく取得していないか、より複雑になっている可能性があります。このコードから抜け出そうとしているのは私です。画面がモバイルビューまたはデスクトップビューになったら、ウィンドウサイズを変更してモバイルサイズに達したら、デスクトップからモバイルへのウィンドウのサイズ変更を1回だけ実行してから、その機能を1回だけトリガーし、デスクトップサイズ。
ただ、最初の呼び出しの後にtrueになります偽の値を持つ変数を作成します。変数がtrueの場合、関数を呼び出さないでください。単純な – instead
@insteadあなたが言ったように私はしようとしましたが、そのサイズ変更のイベントと私はそれを修正する方法がわかりません。私は何をしようとしているのかを理解するためのコードを追加しました。 – Syed