2009-12-15 90 views
0

我真的想首先進入jQuery。用jQuery移動氣球

我有一個網站即時製作,ove氣球點擊它漂浮起來,然後去目標頁面。然而,他們似乎互相攻擊。

<script type="text/javascript"> 
$(document).ready(function(){ 
    $("a.balloon-nav").click(function(event){ 
     var target = $(this).attr("href"); 
     var zIndex = $(this).css("z-index"); 
     $(this).attr("href", "#").css("z-index", "100"); 
     $(this).animate({ top: "-500px" }, 1000, function() { 
       $(this).css("z-index", zIndex); 
       window.location=target; 
       alert("foo"); 
      }); 
    }); 
}); 
</script> 

我也想知道使用「事件」和「傳播」的含義。

+0

「bash into eachother」是什麼意思?我看着你發佈的鏈接。你的意思是他們不會一路走到最前面? – a432511

回答

2

嘗試使用:

$(this).animate({ top: "-500px" }, 1000, '', function() { // ... 

Definition

有生(PARAMS,[時間],[緩和],[回調])


關於eventread here。從那裏採取:

jQuery的事件系統根據歸一化的事件對象W3C標準


event.stopPropagation()通常被用來避免觸發一個事件到父元素。

舉例來說,如果你有

<p> UH 
    <p> Something </p> 
</p> 

,你這樣做$('p').click(function() { //magic stuff });,如果你碰巧點擊<p>含「東西」,神奇的東西會火的兩倍!

所以,如果你做

//bind click event on all 'p's 
$('p').click(
    function(myEvent) { 
     //magic stuff 
     alert($(this).text()); 
     myEvent.stopPropagation(); 
    } 
); 

只要你點擊一個<p>,它確保它得到這個元素上只發射,而不是他的父母。


UPDATE:最好是永遠商店jQuery的元素,如果使用超過一次。在你的情況下,你使用了很多$(this).something(),用於檢索/設置值或調用函數。
嘗試將其保存爲:

var $this = $(this); //stored it in variable 
var someData = $this.something(); 
$this.functionNeeded(...); 
0

我也想知道使用「事件」以及「傳播」的含義。

當您單擊HTML頁面中顯示的文本時,事件(可以解釋爲關於頁面中發生的事情的信息)被傳播(或發送)到事件元素的父元素髮生,然後到父元素,直到到達窗口對象。 這些元素中的每一個都可以對事件做出反應,並且有一個被執行的處理程序。 這就是爲什麼jQuery中的事件處理程序有一個目標參數,它告訴事件處理程序,它是發起事件的元素。