2013-02-27 83 views
0

選擇我有這個選擇的嘗試:jQuery的 - 基於屬性

<textarea tinymce="basicoptions"></textarea> 
<textarea tinymce="advancedoptions"></textarea> 
<script language="javascript" type="text/javascript"> 
$(document).ready(function(){ 
    $('textarea[tinymce]').each(function(){ 
    var tinymceopts = $(this).attr('tinymce'); 
    $(this).tinymce(tinymceopts); 

}); 
</script> 

簡單,我用我的自定義屬性,稱爲tinymce舉行一個字符串,它是一個變量的我存儲在一個名字JavaScript文件。
(JavaScript文件裏面例如:var basicoptions = { ....stuff.... } ,並且這個變量裏面保存了TinyMCE的編輯器中的自定義選項

上面的代碼不工作,但如果我的實際變量之一替換$(this).tinymce(tinymceopts);:。$(this).tinymce(basicoptions);它的工作原理罰款。

其實我有4個變量的工作,但我只有2以上的節目。

有沒有更好的方式來做到這一點?

回答

0

好重新閱讀你的後屈這聽起來像是你只需要訪問一個名字與屬性相似的變量。假設這是一個全局變量,像這樣做:

$(document).ready(function(){ 
    $('textarea[tinymce]').each(function(){ 
    var tinymceopts = $(this).attr('tinymce'); 
    $(this).tinymce(window[tinymceopts]); 
}); 

不是傳遞字符串「basicoptions」到tinymce方法,你現在引用變量window.basicoptions應該映射到您的var basicoptions變量,假定範圍確實處於全球一級。如果不是,只需將window替換爲適用的命名空間。

0

這似乎沒有關於jQuery屬性選擇器,甚至jQuery的問題。

根據我的理解,您已經爲編輯器創建了四個具有不同選項集的變量 - 代替這一點,爲什麼不創建一個具有多個屬性的對象?

var config = { 
    basic: {...}, 
    advanced: {...} 
}; 

這樣,您就可以訪問對應的配置做這樣的事情:

$('textarea[tinymce]').each(function() { 
    var tinymceopts = $(this).attr('tinymce'); 
    $(this).tinymce(config[tinymceopts]); 
}); 

希望它能幫助!

0

是否可以將標記中的選項放入數據集屬性(docs)?然後,您可以使用jQuery data()docs)方法直接檢索選項,而無需使用輔助變量。

您可以在屬性中放入JSON字符串,jQuery將自動將其解析爲可用對象。

<textarea class="tinymce" data-tinymceoptions='{"option":"option_value"}'></textarea> 

$('textarea.tinymce').each(function(){ 
    var options = $(this).data('tinymceoptions'); 
    // pass the options on to the tiny MCE library 
}); 

試試它的jsfiddle:http://jsfiddle.net/gF5Uq/

文檔