看過 上一回 [https://blog.hinablue.me/entry/jquery-queue-and-sure-your-stop-really-stop/]
的問題之後,我們接著看 queue() 與 dequeue() 在核心中做了甚麼事情:
jQuery.extend({
queue: function( elem, type, data ) {
if ( !elem ) {
return;
}
type = (type || "fx") + "queue";
var q = jQuery.data( elem,
前陣子例用 queue 做了許多東西,慢慢的發現,原生的 stop() 並非我想像中的樣子。
* 使用任何的動態效果,或是 delay() 這樣的效果,stop() 能使之停止。
* 使用 queue(),stop() 能使之停止。
* stop() 可以傳入兩個布林值,一個是 clearQueue,另一個是 JumpToEnd。
然而,我卻發現事實上並不是這樣。
* stop() 僅可停止單一動態動態效果,若連續使用並不會停止後續動作。
例如:$('div').animate( { 'left' : '500px'
今天工作的時候,為了要在畫面上加入一些動態效果,並且讓他循序自動執行。所以有這方考量:
* 使用 setTimeout 或是 setInterval
* 利用 animate 可以延遲的方式重新呼叫
* 使用 queue
首先我嘗試了第一個方法,將要執行的東西,包成 function,然後利用 setTimeout 或是 setInterval
呼叫。很好,他可以運作了,但是我遇到另一個問題,當我需要中斷他,或是暫停的時候,用這種方式呼叫就相對的麻煩。因為我加入了動態(Effect)的效果,如果直接強制中斷,那該怎麼知道他做到
寫到這裡,我想說一句公道話,那就是,我之前寫的三篇都可以直接扔進垃圾桶,是一般垃圾
不用回收了(翻桌)。編輯器最重要的一個部分,就是自訂的對話框(Dialog),編輯器預設的對話框,跟 FCKeditor 有些許的差異,像是上傳檔案的對話框,在
CKeditor 裡面就沒有在預設工具列內(主要是要提倡跟自家的 CKFinder 合併使用)。
首先呢,在 CKeditor 裡面,所有的對話框都是使用 JavaScript 來產生,所以在設定上並不像以前 FCKeditor 那樣改改他的原始的 html
檔案就能更動對話框,
這個 CKeditor 有些地方實在是超乎我的想像,他做到了一些並不是編輯器迫切需要的功能,舉例來說,他可以控制 DOM
元件。也許你會覺得,我在編輯器裡面可以控制 DOM 元件並不是什麼壞事,偏偏,他控制的是編輯器以外的 DOM 元件。
當我在測試 Event 的時候,發現這個東西並不只有一種,換句話說,他的 Event 控制分成兩組,一組是自訂的監聽與觸發(類似 ActionScript
那樣),另一組是針對 DOM 元件的特定 events 作觸發(