2012-04-21 59 views
2

我試圖實現一些非常基本的東西。我正在使用一個公開可用的jQuery模塊(稱爲slides),但我需要以某種方式修改它,以便我可以從外部控制該對象。現在jQuery初始化函數返回其父對象

初始化的時候是這樣的:

$('#myDivId').slides({ 
    preload: false, 
    generatePagination: false 
}); 

它所有的作品,但我沒有看到任何方式訪問幻燈片對象以後。就像這樣:

var slideshow=$('#myDivId').slides({ 
    preload: false, 
    generatePagination: false 
}); 

現在我想能夠做這樣的事情:

slideshow.animate('next'); 

變量的內容幻燈片是不實際的對象。我認爲這與jQuery的工作方式有關。

一旦這個工程,我將能夠更具體地調用幻燈片,因此適應它在我的'前端使用環境'中正常工作。

現在我想有是要返回的實際生成的對象,或者至少是在返回的數據還可以。

任何人都可以在正確的方向指向我嗎?

Click here to see demonstration in jsFiddle

謝謝!

+0

糟糕。我的錯。 – Ohgodwhy 2012-04-21 19:14:45

+0

也許如果你發佈代碼,你已經試過有人可以指出它有什麼問題。 – 2012-04-21 19:31:43

+0

您可以通過這種方式調用幻燈片功能:'$(「#myDivId」)。幻燈片(「下一個」);'一些更多的代碼展示你正在嘗試做什麼肯定會有幫助。 – Dennis 2012-04-21 19:41:47

回答

0

使用jQuery的觸發器方法,我能夠模擬某些元素的行爲幻燈片,從而找到一種不需要調用父對象上的任何方法的方法。

0

函數slides()($.fn.slides)是一個jQuery方法。在jQuery中,jQuery.fn或$ .fn是所有jQuery對象的原型對象。如果你爲這個對象添加一個函數,那麼這個函數就變成了一個jQuery方法。


使用變量作爲jQuery對象,你應該這樣做:

var obj = $("#myDivId") // now obj, is a jquery object 

,你可以使用jQuery對象的方法是這樣的:

obj.slides(); 
+0

這是很好的輸入,謝謝,但我沒有看到我可以如何應用這一點,因爲我仍然無法從外部訪問該對象,創建它之後(如我的帖子中的僞代碼所示)。我將編輯我的帖子,以便它可能變得更容易理解。 – SquareCat 2012-04-21 19:56:37

+0

@ user1018787當你用'$(「selector」)'選擇一個元素時,所選元素變成了jquery對象,並且你可以使用jquery對象的所有方法,slides.js插件用'幻燈片來擴展jQuery對象()'方法,可以使用它,並且可以像其他jquery方法一樣使用它。 – undefined 2012-04-21 20:06:46

+0

我試過這個,但我不能以這種方式訪問​​對象中的函數。我也沒有從js調試控制檯收到錯誤消息。它只是不會註冊爲函數調用。 – SquareCat 2012-04-21 20:11:47

0

一旦這個工程我將能夠使更多的具體調用幻燈片,因此它適應在我的「前端正常工作使用環境'。

嗨,瞧... https://github.com/nathansearles/Slides/blob/master/source/slides.js#L123

這是否幫助你嗎?

/* 
Method Calls - The good stuff 
============================================================ 

Play: 
    $("#slides").slides("play"); 

Pause: 
    $("#slides").slides("pause"); 

Stop: 
    $("#slides").slides("stop"); 

Next: 
    $("#slides").slides("next"); 
     - Uses default effect 

    $("#slides").slides("next","fade"); 
     - Define effect, "slide" or "fade" 

Previous: 
    $("#slides").slides("previous"); 
     - Uses default effect 

    $("#slides").slides("previous","fade"); 
     - Define effect, "slide" or "fade" 

Goto a slide 
    $("#slides").slides("slide",2); 
     - Goto slide 2 using default effect 

    $("#slides").slides("slide",4,"fade"); 
     - Define effect, "slide" or "fade" 

Update: 
    $("#slides").slides("update"); 
     - Rebuilds pagination 

Destroy: 
    $("#slides").slides("destroy"); 
     - Removes SlidesJS, returns to predefined state 

Status: 
    $("#slides").slides("status"); 
     - Returns JSON object: 
      { 
       current: 4, 
       state: "playing", 
       total: 7 
      } 

    $("#slides").slides("status","current"); 
     - Returns current slide number 

    $("#slides").slides("status","state"); 
     - Returns playing, paused, or stopped 

    $("#slides").slides("status","total"); 
     - Returns total slides in slideshow 
*/ 

如果這不是你想要做什麼,你總是可以看看這些例子http://slidesjs.com/或報告問題https://github.com/nathansearles/slides/issues得到更具體的幫助或要求的新功能。如果你想要做的不是由插件處理,你必須要求該功能或編輯插件代碼(提示:第一個答案更好)

+0

這也是很棒的東西!謝謝!問題是這是測試版,作者似乎已經改變了代碼。實際的實時版本不支持這些調用。我真的嘗試過。另外,我找不到任何「狀態」功能,例如,在現在正在運行的原始代碼中。然而,在這個測試代碼中的某處是答案,因爲如果他讓這些函數在外面可用,那麼jQuery類/對象定義中的某些內容一定能夠實現。 – SquareCat 2012-04-21 20:12:42

+0

嗯..我沒有嘗試,但所有可用的屬性/方法似乎列在這裏https://github.com/nathansearles/Slides/blob/master/source/slides.js#L534你可以讓**簡單** jsfiddle對於我們來測試? – pomeh 2012-04-21 20:16:15

+0

我創建了一個小提琴。我現在將其添加到我的問題中。 – SquareCat 2012-04-21 20:39:15