2013-01-06 62 views
1
$('#closecallout').click(function() { 
    $('.callout').animate({"right" : "-260px"}, 500).addClass('calloutclosed'); 
}); 
$('.calloutclosed').hover(function() { 
    $(this).animate({"right" : "0px"}, 500); 
}, function() { 
    $(this).animate({"right" : "-260px"}, 500); 
}); 

點擊函數是爲了'隱藏'標註框,然後在徘徊時,它會回到焦點。addClass()添加類後的jQuery函數

爲什麼懸停功能不起作用?是否因爲這些都在jQuery(function($){ });之內?

我應該採取哪些措施來糾正此問題?

http://jsfiddle.net/R5Dmu/

非常感謝SO

回答

5

爲了讓事件觸發基於其當前的類,你需要使用事件代表團.on()元素。

$('#closecallout').click(function() { 
    $('.callout').animate({"right" : "-260px"}, 500).addClass('calloutclosed'); 
}); 
$(document).on('mouseover', '.calloutclosed', function() { 
    $(this).animate({"right" : "0px"}, 500); 
}).on('mouseout', '.calloutclosed', function() { 
    $(this).animate({"right" : "-260px"}, 500); 
}); 

DEMO

+0

在Chrome中竊聽。所有的時間收益和開放... –

+0

@NorbertPisz這是什麼意思? – Musa

+0

嘗試多次盤旋和取消快速切換並觀察效果。 –

2

當你調用函數點擊您需要添加類,並實現懸停功能。在你的代碼中你添加了點擊事件的類,但沒有實現懸停功能。你可以在文檔準備好的時候實現懸停功能,然後Jquery可以找到calloutclosed類的選擇器,因爲它不是點擊事件。

檢查:

jQuery(function ($) { 

//CALLOUT 
$('#closecallout').click(function() { 
    $('.callout').animate({ 
     "right": "-260px" 
    }, 500) 
    $('.callout').addClass('calloutclosed'); 

    $('.calloutclosed').hover(function() { 
     $(this).animate({ 
      "right": "0px" 
     }, 500); 
    }, function() { 
     $(this).animate({ 
      "right": "-260px" 
     }, 500); 
    }); 

}); 
}); 
+1

該代碼有效,但如何解釋鏡頭?請正確格式化您的答案。目前的形式非常難以閱讀。 – Lix

+1

@Lix格式化,我寫一個關於你的問題的簡單例子。 –

+0

太棒了!你的帖子現在看起來好多了:)另外我不是那個問這個問題的人:) – Lix