2011-09-19 91 views
0

作爲一個瞭解jQuery插件如何工作的練習,我想停止從javascript控制檯(使用Firebug與Firefox)在jQuery輪播插件中進行自動滾動。訪問jquery插件的實例

在插件here的演示中,停止自動滾動非常容易。我只是在控制檯中使用下面的代碼。

$('#mycarousel').jcarousel('stopAuto') 

然而,this site它使用上述插件的舊版本(和舊版本的jQuery)的等效代碼:

$('#showcaseHolder').jcarousel('stopAuto') 

不工作。

我注意到的一個區別是,在第一個(工作)情況下,對jcarosel的調用返回'undefined',而在第二個(不工作)情況下,它返回元素本身。

這兩種情況有什麼區別?我怎樣才能在第二個站點上調用'stopAuto'?爲什麼它在第二種情況下返回元素?

感謝您的幫助!

+0

的差異在這些情況下是版本...較新的版本是從舊版本的不同。閱讀文檔,它就在那裏。 – Andrew

+0

@Andrew舊版插件或jquerry的文檔?我無法爲舊版本的插件提供文檔,你有鏈接嗎? – evan

+0

您可以在源代碼中找到文檔。只需右鍵單擊頁面並單擊源代碼。通過文本篩選,直到遇到這個:''如果您使用Firefox,則應該有一個直接鏈接,所以這只是一個簡單的點擊而已。開發人員在那裏有一些文檔。 – ShadowScripter

回答

0

你說你這樣做是爲了學習插件如何工作..如果你在新版本中調用$('#mycaousel').jcarousel('stopAuto'),它會返回undefined,因爲它並不打算被鏈接。

的jCarousel函數接受一個「選項」:在舊版本中,它因爲在OLDSKOOL版本打算在這是可鏈接的插件開發者,這意味着你也許可以做這樣的事情,$('#mycaousel').jcarousel('stopAuto').jcarousel('startAuto')

返回元素本身對象,它允許你在一個對象中指定可選的參數,例如:{scroll: 1}

如果沒有閱讀關於這個舊版本的任何文檔並查看代碼,我會假設你可以提供'0'到'auto'可選參數,這將關閉自動滾動。現在你有自動設置爲15,這意味着它應該自動滾動1.5秒後

試試這個:

jQuery(document).ready(function() { 
    jQuery('#showcaseHolder').jcarousel({ 
     scroll:1, 
     itemLoadCallback: function (carousel, state) { 
      JQUERY_CARA_LEFT = carousel;    
     }, 
     auto: 0, /* was auto: 15 */ 
     wrap:'both' 
    }); 
    jQuery('#showcaseHolderRight').jcarousel({ 
     scroll:1, 
     itemLoadCallback: function (carousel, state) { 
      JQUERY_CARA_RIGHT = carousel;   
     }, 
     auto: 0, /* was auto: 15 */ 
     wrap:'both' 
    }); 
}); 

注意:您也可以卸載auto: 0,因爲如果你不提供可選的「自動」帕拉姆它默認爲「0」

UPDATE(基於脫評論):

我可以告訴你答案,但我想解釋我是如何得到這樣的:

在jcarousel.js源,這是關鍵部分:

// Create shortcut for internal use 
var $jc = $.jcarousel; 
... 

$jc.fn.extend({ 
... 
startAuto: function(s) { ... }, /* s = number of seconds to autoscroll by */ 
stopAuto: function() { ... } 
... 

這意味着 'startAuto(S)' 和 'stopAuto()' 是的jCarousel對象的參數。

因爲在你的代碼,當你實例化你的jCarousel對象你把一個在VAR JQUERY_CARA_LEFT,另一個在JQUERY_CARA_RIGHT,這是你需要使用的格式:

要隨時開始:

JQUERY_CARA_LEFT.jcarousel.startAuto(15); 
// or 
JQUERY_CARA_RIGHT.jcarousel.startAuto(15); 

,並停止在任何時間:

JQUERY_CARA_LEFT.jcarousel.stopAuto(); 
// or 
JQUERY_CARA_RIGHT.jcarousel.stopAuto(); 
+0

感謝有關鏈接的信息,這非常有幫助!實例加載後有沒有辦法改變自動選項?我希望能夠在啓動後停止自動滾動,然後重新啓動它(儘管如果我能想出如何阻止它,我可能會重新啓動它。)感謝您的回答! – evan

+0

NM謝謝你的回答我明白了。我只是調用了JQUERY_CARA_LEFT.stopAuto()。如果你有機會,我仍然想知道爲什麼我不能通過使用jquerry選擇器來調用該函數?再次感謝!!! – evan

+1

你無法通過jquery選擇器調用函數的原因是你實例化了一個新的jcarousel。在文檔中它讀取'$ .extend.fn.jcarousel ...',所以每次執行'$(「#」)。jacarousel()'時,您不會指向文檔中的那個,您指的是你剛剛創建的那個。您可以參考的唯一方法是通過已定義的變量或全局變量。就像你剛剛做的一樣。 – ShadowScripter