我看到的問題是,你重新綁定,每次你TRANSTION事件,你按一下按鈕
$("div.button-1").click(function() {
if($("div.no2 div.inside").hasClass("invisible") != true) {
// FOLLOWING LINE IS RE-BOUND EACH TIME WITH ON()
$("div.no2 div.inside").addClass("invisible").on('transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd', function() {});
});
})
這是在多個地方的情況下,使多個事件處理程序綁定到您的div( no1,no2)。解決這個問題,它可能會解決你的問題。 (你可以調用off()
或綁定你的點擊處理程序之外的事件處理程序)
編輯:這裏有一個更新的小提琴是演示如何調用off
,以防止多個事件綁定(腳本清理以及):http://jsfiddle.net/e98fgcg1/2/
代碼更改:
var TRANSITIONS = 'transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd';
$('div.button-1, div.button-2').on('click', function() {
var ORIGINAL = $(this).hasClass('button-1') ? 'div.no1' : 'div.no2';
var SELECTOR = ORIGINAL === 'div.no1' ? 'div.no2' : 'div.no1';
if ($(SELECTOR).find('div.inside').hasClass('invisible') !== true) {
$(SELECTOR).find('div.inside').addClass('invisible').on(TRANSITIONS, function() {
$(SELECTOR).find('div.inside').off(TRANSITIONS);
$(SELECTOR).removeClass('bigger').on(TRANSITIONS, function() {
$(SELECTOR).off(TRANSITIONS);
$(SELECTOR).removeClass('z-index-2');
$(ORIGINAL).addClass('z-index-2').addClass('bigger').on(TRANSITIONS, function() {
$(ORIGINAL).off(TRANSITIONS);
$(ORIGINAL).find('div.inside').removeClass('invisible');
});
});
});
} else {
$(ORIGINAL).addClass('z-index-2 bigger').on(TRANSITIONS, function() {
$(ORIGINAL).off(TRANSITIONS);
$(ORIGINAL).find('div.inside').removeClass('invisible');
})
}
});
歡迎來到Stack Overflow!請在此添加有意義的代碼和問題描述。不要只是鏈接到需要修復的網站 - 否則,一旦問題解決,這個問題將會給未來的訪問者帶來任何價值。發佈一個證明你的問題的[最小化,完整,可驗證的例子](http://stackoverflow.com/help/mcve)會幫助你得到更好的答案。欲瞭解更多信息,請參閱[我網站上的某些內容不起作用。我可以只粘貼一個鏈接嗎?](http://meta.stackexchange.com/questions/125997/)謝謝! – 2015-02-06 01:32:26
請在http://jsfiddle.net/中構建您的代碼,以便輕鬆調試。 – qtgye 2015-02-06 01:36:37
以下是jsfiddle中的網站,但我不知道如何讓我的js在其中工作:( http://jsfiddle.net/e98fgcg1/ – 2015-02-06 01:40:28