0

我有这个选择器尝试:

<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 个。

有一个更好的方法吗?

4

3 回答 3

0

好的,在重新阅读您的问题后,听起来您只需要访问一个名称与属性相似的变量即可。假设它是一个全局变量,请这样做:

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

您现在不是将字符串“basicoptions”传递给tinymce方法,而是引用一个window.basicoptions应该映射到您的变量的var basicoptions变量,假设范围确实在全局级别。如果不是,只需替换window为适用的命名空间。

于 2013-02-27T23:03:59.540 回答
0

这似乎不是关于 jQuery 属性选择器,甚至 jQuery 的问题。

根据我的理解,您已经为编辑器创建了四个具有不同选项集的变量 - 而不是这个,为什么不创建一个具有多个属性的对象呢?

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

通过这种方式,您可以访问相应的配置,执行以下操作:

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

希望能帮助到你!

于 2013-02-27T23:12:32.923 回答
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/

文档

于 2013-02-27T23:17:33.647 回答