2013-08-21 29 views
1

我想慢慢前進,並創建幾個jquery插件,這應該是輕量級的,做我需要的東西。如何訪問jQuery插件中的附加元素並將其存儲在全局變量中?

現在我想製作一個超級簡單的jQuery進度條。問題是我無法訪問jQuery .append()動態追加的元素。

這裏是JSFidle:http://jsfiddle.net/LRHXf/6/

正如你所看到的,「孩子」 .smk_pb_child應該有一個diferrent顏色和寬度,但不知什麼原因,我不能做這個工作。

我怎樣才能得到這個元素的變量,並在這之後使用它到處都需要它?

+0

有幾個答案可以幫助你。你也可以試試這個:[動態創建進度條](http://stackoverflow.com/questions/18169270/how-should-multiple-progress-bars-be-handled-in-javascript/18169807#18169807)。通過改變它的CSS,我認爲它可能足夠好用。 –

+0

這只是一個例子,但我想要做的不僅僅是一個進度條,而且還有更多的插件用於不同的使用,主要問題是我無法訪問動態創建的元素。 ;) –

回答

1

的問題是,你正在初始化變量child你追加子元素之前。您需要在添加smk_pb_child DIV後appendChildren方法中初始化變量:

plugin.appendChildren = function() { 
    plugin.append('<div class="smk_pb_child"></div>'); 
    child = plugin.children('.smk_pb_child'); 
} 

Working Demo

+0

奇怪的是,我認爲我不允許在函數中聲明一個變量,然後在另一個函數中使用它。但可能是因爲在這裏我們正在談論的方法......感謝它像一個魅力。 –

+0

您需要在插件作用域中定義子變量,然後更新appendChildren方法中的值。 – cfs

0

我看到你的jsfiddle演示,並使用此代碼

// Append children 
     var appendhtml='<div class="smk_pb_child"></div>'; 
     plugin.appendChildren = function() { 
        plugin.append(appendhtml); 
       } 

,或者您也可以使用

var appendhtml=$("<div />").attr('class',"smk_pb_child"); 
0

而是附加HTML的字符串,嘗試創建jQuery中的HTML並將其設置爲一個變量,然後追加變量。

plugin.appendChildren = function() { 
    plugin.myDiv = $('<div class="smk_pb_child"></div>'); 
    plugin.append(plugin.myDiv); 
}; 
2

您只要設定VAR孩子追加元素之前,你需要在你裏面追加改變VAR功能:

plugin.appendChildren = function() { 
    plugin.append('<div class="smk_pb_child"></div>'); 
    child = plugin.children('.smk_pb_child'); 
} 

var child; 

小提琴:http://jsfiddle.net/LRHXf/12/

相關問題