0
早安人 - 我一直有這個問題好幾個小時,我無法隔離它。jQuery回調與變量範圍和功能混淆?
我這片jQueryzed JavaScript代碼:
jQuery(document).ready(function() { var validated = 1; jQuery('#help_continue').click(function() { jQuery('#step' + validated + ', #step' + validated + '_help').fadeOut(200, function() { jQuery('#step' + validated + '_help').removeClass('visible').find('.visible').removeClass('visible'); jQuery('#step' + (validated + 1) + '_help').addClass('visible'); jQuery('#step' + (validated + 1) + '_help div:first').addClass('visible').css({display: 'block'}); jQuery('#step' + (validated + 1) + ', #step' + (validated + 1) + '_help').fadeIn(200); }); }); });
都好,沒有什麼太花哨。如果綁定到HTML,則按預期工作。
的事情是,當我加入這個進來:
jQuery(document).ready(function() { var validated = 1; jQuery('#help_continue').click(function() { jQuery('#step' + validated + ', #step' + validated + '_help').fadeOut(200, function() { jQuery('#step' + validated + '_help').removeClass('visible').find('.visible').removeClass('visible'); jQuery('#step' + (validated + 1) + '_help').addClass('visible'); jQuery('#step' + (validated + 1) + '_help div:first').addClass('visible').css({display: 'block'}); jQuery('#step' + (validated + 1) + ', #step' + (validated + 1) + '_help').fadeIn(200); alert(validated); // this... }); validated++; // ...and this. }); });
兩次顯示的警告,與「驗證」變量從未= 1裏面的功能 - 始終2.
我當然不是JavaScript專家,但我絕對知道這只是錯誤的,除非我錯過了一些東西。我來自PHP背景,我知道JavaScript有它的特質,但這很奇怪。
我使用jQuery 1.5,如果它很重要。任何人都知道發生了什麼?
你是說,驗證的++是在觸發點擊處理程序的同時執行的,而不是在動畫完成後執行?此外,我不知道警報發生了什麼 - 我嘗試在淡入淡出後設置驗證的++,但仍然沒有任何結果。 – AeroCross 2011-02-12 06:45:57