2011-12-08 41 views
2

首先,讓我提一提,這是我第一次嘗試從頭開始編寫jQuery插件。

對於初學者,我希望我的插件通過對象接受用戶定義的選項(+ parms)。例如:

<script> 
    $(document).ready(function() { 
     $('.myClass').augaetrk({ 
      myobja : {zero:'obj00 zero',one:'obj01 one',two:'obj02 two'}, 
      myobjb : {zero:'obj10 aaa',one:'obj11 bbb'} 
     }); 
    }); 
</script> 

注意:這些對象的名稱將不會被預定義。他們將由開發人員使用該插件自行決定。爲了簡短起見,在插件中,我解析(例如)一個鏈接的CSS類,以確定哪個用戶參數對象我應該進一步使用插件。例如。

<a class="other-class-1 this-myobja otherclass-2" href="http://mylink.com">some link</a> 

我可以得到類 - 在這種情況下,該-myobja和我所需要的對象,myobja的名稱。我似乎無法弄清楚如何使用該字符串/值作爲我想要訪問/利用其parm值的對象的名稱。

目前,我每個人都在通過選項,並使用一個簡單的如果去我想要的對象。它的工作原理,但我想我會增加很多不必要的開銷。在PHP中,我會使用$$,但我似乎無法在jQuery中找到相同的結果。

如何從解析鏈接的類=中獲取我獲得的值,然後使用該值獲取相應的(用戶)選項?

如果你能夠幫助鍵入緩慢,並假設我知道甚至比你想象的我知道的更少。雖然可能是一個稍微高級的編程概念,但我絕不是一個高級的,甚至是平均的jQuery開發人員。我相信你很忙,但如果你給出一個答案/例子,請記住我正在努力學習,所以一些解釋將不勝感激。謝謝。

+2

以現在正在使用的形式提供相關代碼將非常有幫助,因爲一行代碼可以說出一千個單詞。 – Jon

+1

如果你正在做'var thePorpertyAsAVariable = a; obj.thePorpertyAsAVariable'然後你可以做'obj [thePorpertyAsAVariable]'。 – prodigitalson

+0

請提供'augaetrk'方法的代碼。 –

回答

3

如果您可以從a的類中獲取對象的相關部分的名稱,那麼可以參考它:object["stringKey"]object[variable]。鑑於您的例子:

// this object mimics the object passed to your plugin 
var myobj = { 
    myobja: { 
     zero: 'obj00 zero', 
     one: 'obj01 one', 
     two: 'obj02 two' 
    }, 
    myobjb: { 
     zero: 'obj10 aaa', 
     one: 'obj11 bbb' 
    } 
} 

var objectName = "myobja"; // This would be the value from the A elements' class 
alert(myobj[objectName].zero) 

Example fiddle

+0

Hi Rory。謝謝。我懷疑這是一個問題,因爲我並沒有將自己的腦袋纏繞在正確的jQuery符號上。 請再提一個問題 - 我該如何處理 - 或者不是 - objectName和引號。也就是說,當我解析這些類以獲得我想要的對象名稱時,是否將它放在引號中?追加引號? –

+0

排序。謝謝Rory。最後兩行是我所需要的。我覺得自己很愚蠢,但同時我高高在上地尋找一個例子,找到了尼坦。乾杯! –

+0

不用擔心,樂於幫忙。 –

0

您可以使用方括號來使用字符串作爲對象的密鑰。

var object = {}; 
var str = 'prop'; 
object[str] = 12; 
console.log(object.prop); // 12 
+0

是的,但讓他們作爲選擇讓我離開。正如我所提到的,正如我所提到的,我的問題可能是符號的一種,我認爲這也可能有幫助。 –

0

歡迎!

您希望收到的用戶選項是上述來源的對象嗎? myobjamyobjb? 那麼將這些對象存儲在關聯數組中呢?

objects["myobja"] = myobja; 
objects["myobjb"] = myobjb; 

這有些有用嗎?

+0

這是可能的,我想。但是,我的瓶頸不在於我如何存儲參數,而在於如何根據進一步下載過程中的值來訪問它們。 –

+0

是的,你說從基礎開始,但我認爲如果你知道如何創建一個。你知道如何將數據拉回來:)我看到羅伊編輯他的答案因此:)對不起! – yoshi