2016-06-29 4 views
0

私はいくつかのjavascript関数を持っています。 resizeイベントの発生を2回停止するために、私は日付まで完全に動作していた修正を実装しました。ウィンドウのサイズ変更が発生しない

function tabsResize() { 
    clearTimeout(timeout); 
    timeout = setTimeout(function() { 
     tabsUpdate(); 
    }, 200); 
} 

$(window).on("resize", tabsResize); 

しかし、私はちょうど食物連鎖のより低い位置に座っているが全く同じことをしている別の機能を作成しました。

var form = function() { 
    var pub = {}, timeout; 

function textareaAutoGrow() { 
    var pad = $(this).outerHeight(false) - $(this).innerHeight(); 

    this.style.height = "auto"; 
    this.style.height = (this.scrollHeight + pad) + "px"; 
} 

function textareaResize() { 
    alert("resize"); 
    clearTimeout(timeout); 
    timeout = setTimeout(function() { 
     textareaAutoGrow(); 
    }, 200); 
} 

function setupBindings() { 
    $("body").on("input", "textarea", textareaAutoGrow); 
    $(window).on("resize", textareaResize); 
} 

// PUBLIC FUNCTIONS 

pub.init = function() { 
    setupBindings(); 
} 

return pub; 
}(); 

問題は、それがトリガされていないことである - それだけでリサイズ機能だ - 自動拡張機能が動作し、私が見ることができる何のjavascriptのエラーはありません。

実際に発砲したかどうかを確認するために、警告を追加しました。まだ喜びはありません。

ただし、タブにサイズ変更機能を追加すると、両方のアラートが発生しました。私はタイミング問題のようなものだと推測していますが、修正方法はわかりません。

誰でもアドバイスしますか?

答えて

0

first code demo

var _timeOut = null; 
 

 
function tabsResize() { 
 
    if(typeof(_timeOut)) 
 
     clearTimeout(_timeOut); 
 
    _timeOut = setTimeout(function() { 
 
     alert('=)'); 
 
    }, 200); 
 
} 
 

 
$(window).on("resize", tabsResize);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Second code Demo

var _timeOut = null; 
 

 
var form = function() { 
 
    var pub = {}, timeout; 
 

 
function textareaAutoGrow() { 
 
    alert('=)'); 
 
    var pad = $(this).outerHeight(false) - $(this).innerHeight(); 
 

 
    this.style.height = "auto"; 
 
    this.style.height = (this.scrollHeight + pad) + "px"; 
 
} 
 

 
function textareaResize() { 
 
    alert("resize"); 
 
    
 
    if(typeof(_timeOut)) 
 
     clearTimeout(_timeOut); 
 
    _timeOut = setTimeout(function() { 
 
     textareaAutoGrow(); 
 
    }, 300); 
 
} 
 

 
    $("body").on("input", "textarea", textareaAutoGrow); 
 
    $(window).on("resize", textareaResize); 
 

 
return pub; 
 
}();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

私は黙っていませんでした。ただテストしています。 –

+0

demo1の改訂コードと一貫して作業しているようです。 –

関連する問題