2011-03-27 93 views
2

我試圖做如何創建一系列功能?

myfun(params, 
    function(){ 
     //something happen 
    } 
); 

,但它是不工作的,我絕對不知道爲什麼,我要瘋了。 幾個星期後,我仍然對一個問題感到頭痛,而且我需要真正的幫助,因爲我不擅長Jquery語法。

我想要實現的是: 啓動一個函數,檢查您是否在圓形區域內懸停,如果您確實觸發了一系列函數(在這種情況下顯示一系列動畫) 。我不能「一個接一個」。

我想要做到這一點,因爲在safari中,當你製作一個帶半徑邊框的鏈接,並且你想要懸停在該元素上時,它仍然表現爲一個正方形。我不想使用圖像映射。

以及我不能重複使用相同的函數來檢查在一個圓區域內懸停多次(不要問我爲什麼,我試圖理解,但我不夠聰明或不夠能夠理解),所以我唯一的最後一個資源是嘗試基於序列觸發事件。

aniCircle它是我想嵌套動畫序列的函數。這是它是如何看的功能:

$("#cv").hover( 
    function(){ 
     $("#sliders .circle").css("z-index","6"); 

     aniCircle(1, $(this), "#slider1", {"opacity":"0"},{"opacity":"1"}, 0, speed2, 
      function(){$("#slider2").delay(speed2).animate({"opacity":"1"},speed2)} 
     ); 

    }, 
    function(){ 

     $("#slider1").animate({"opacity":"0"},speed2) 
     $("#slider2").delay(speed2).animate({"opacity":"0"},speed2) 

    } 
); 

在這裏有網頁 http://life-is-simple.co.uk/test5/index.html

記得在FF4它工作正常圓區域,它是,它不和我WebKit瀏覽器想用JS解決它。

感謝您對所有您的幫助

+0

它的JavaScript語法。JavaScript是一種語言,jQuery是圖書館。 – 2011-03-27 14:18:45

+0

肯定的,但需要在特定的寫入的jQuery因爲這個原因,我寫了語法,如果你告訴我你不能使用這種類型的短語,我會修改我的內容 – Littlemad 2011-03-27 14:30:00

+0

沒有比Javascript更多的功能,這就是爲什麼它被稱爲Javascript語法,用於jQuery的語法不是唯一的到jQuery。 – 2011-03-28 00:05:04

回答

0

對不起,但我必須在以後重新提出這個問題,我注意到沒有一個更直接的例子,沒有時間獻給我的網站(我發現自己在整個一週的時間裏忙於各種項目甚至在正常工作時間之後),我不想保留我的問題,只是爲了保持開放而不嘗試和測試您的解決方案。

我很抱歉我讓你花費在這個問題上的時間。我會盡力在將來組織得更好。非常感謝您的寶貴時間。

我試圖關閉它,但賞金的淡然,我不能關閉它:(

+0

這是一個糟糕的形式。問題:人們試圖幫助你,也許部分是因爲賞金,當然你不應該關閉它,你應該鼓勵進一步的答案,並獎勵你最喜歡的獎勵,或者讓系統分配1/2你的賞金會自動轉到最高票數的答案 – 2011-04-18 08:42:52

+0

我同意,我不喜歡選擇這個解決方案,我個人不關心這些問題,我以後可以隨時恢復。我不 必須遵循並測試每個人的建議。我如何聯繫管理員並向他尋求幫助?我不介意把自己的觀點重新提交給人們,或者投票答覆他們的答案,或者至少保持開放更長的時間,我真的因爲工作而下雪了,但我不喜歡投票而不確定答案是否正確的一個(我不想爲一個問題創建一個錯誤的內容先例) – Littlemad 2011-04-19 15:49:47

+0

在這種情況下,只要離開它,讓系統獎勵更高的讚揚的答案。 – 2011-04-20 02:59:11

0

jQuery的animate() takes a "complete" callback。您可以嵌套序列,如:

$("#slider1").animate(
    {"opacity":"0", 
    "speed": speed2, 
    "complete": second_animation 
    } 
); 

function second_animation() { 
$("#slider2").animate()... 
} 

slider2動畫將不會開始,直到slider1動畫完成。

+0

我的功能aniCircle不是一個動畫,它包含各種檢查後的動畫和回調(我猜)它不工作。請看看該功能的代碼 – Littlemad 2011-03-28 15:03:01

0

它看起來像你想是這樣的:

var outer = function(){ 
var test = function(){ 
    alert('fired 1'); 
}() 
var test2 = function(){ 
    alert('fired 2'); 
}() 
} 

的通知「()」後的方法聲明,這使得它立即開火。 這些會依次觸發,但如果您將代碼應用於將異步觸發的代碼,則需要使用回調方法。

0

默認情況下,JavaScript沒有「函數序列」。 jQuery的animate()可以處理回調函數,因爲它被編碼爲在動畫完成時調用回調函數。

我認爲你正在尋找的東西,如:

function setupThenCall(param1, param2, fn) { 
    // do some setup/processing 

    // call callback function after setup 
    fn(); 
} 

如果你正在做的事情比較複雜,例如多個級別的回調,你可能想要使用jQuery的queue()

2

我想用jquery .queue()可以解決你的問題。

+0

我會傾向於同意 - http://stackoverflow.com/questions/1058158/can-somebody-explain-jquery-queue-to-me可能對更多文檔有用... – gnarf 2011-04-17 09:13:46