2015-01-12 74 views
0

HTML如何防止click和fadeOut函數中變量的值發生變化?

<div class="dropdown"> 
    <label class="add-genre-filter not-selected">Add genre filter</label> 
    <select class="filter" name="filter[]"> 
     <option value="some-value">Some Item</option> 
     <option value="some-value">Some Item</option> 
     <option value="some-value">Some Item</option> 
     <option value="some-value">Some Item</option> 
    </select> 
    <span class="cancel"> x </span> 
</div> 

JS

$(document).ready(function(){ 
    var genreLimit = 3; 

    $('.dropdown .add-genre-filter').live('click', function(){ 
     genreLimit ? ($(this).parent().append(options) , genreLimit--) : false; 
     console.log(genreLimit); 
    }); 
    $('.dropdown .cancel').live('click', function(){ 
     $(this).prev().fadeOut("normal", function(){ $(this).remove(); }); 
     $(this).fadeOut("normal", function(){ genreLimit++; $(this).remove(); }); 
     console.log(genreLimit); 
    }); 

}); 

注:我使用jQuery 1.6,這就是爲什麼還在使用live()功能

通過點擊<span class="cancel">selectspan淡出並從文檔中刪除。同時也增加了1

的的genreLimit價值,但如果我反覆點擊spanX然後genreLimit值按點擊數量的增加,直至其完全消失出局。我知道它應該像這樣下降,因爲它在click事件中。

但是,我想在fadeOut中只增加一次該值。所以,多次點擊不會改變我的功能。這裏可以做些什麼?

+0

你'。新增流派 - filter'點擊可以僅僅是:!'如果(genreLimit && $(」下拉(':animated'))$(this).parent()。append(options),genreLimit - ;' –

+0

你真的應該看看更現代的jQuery和.one 。上();請參閱:http://api.jquery.com/one/ –

+0

與論壇網站不同,我們不使用「謝謝」或「任何幫助表示讚賞」,或對[so]使用簽名。請參閱「[應該'嗨','謝謝',標語和致敬從帖子中刪除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be ),這是「提前致謝」,而不是「感謝先進」。 –

回答

1

你可以設置一個標誌說,它正在執行褪色..

$(document).ready(function(){ 
    var genreLimit = 3; 
    var is_fading = false; 

    $('.dropdown .add-genre-filter').live('click', function(){ 
     genreLimit ? ($(this).parent().append(options) , genreLimit--) : false; 
     console.log(genreLimit); 
    }); 
    $('.dropdown .cancel').live('click', function(){ 
     if (is_fading) return; // don't run if it is already fading... 

     is_fading = true; 
     // choose the correct callback to 'unlock' the flag.. 
     $(this).prev().fadeOut("normal", function(){ $(this).remove(); is_fading = false;? }); 
     $(this).fadeOut("normal", function(){ genreLimit++; $(this).remove(); is_fading = false;? }); 
     console.log(genreLimit); 
    }); 
}); 
+0

感謝您的解決方案。什麼是'?'在結尾btw? –

+0

抱歉,這... ...什麼也沒有,它更像是「也許在這裏或這裏」。 –

相關問題