我有这个选择器尝试:
<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 :(得分:0)
在重新阅读你的问题之后好了,听起来你只需要访问一个名称与属性相似的变量。假设它是一个全局变量,可以这样做:
$(document).ready(function(){
$('textarea[tinymce]').each(function(){
var tinymceopts = $(this).attr('tinymce');
$(this).tinymce(window[tinymceopts]);
});
您现在引用的变量tinymce
应该映射到您的window.basicoptions
变量,而不是将字符串'basicoptions'传递给var basicoptions
方法,假设范围确实在全球水平。如果不是,只需将window
替换为适用的命名空间。
答案 1 :(得分:0)
这似乎不是关于jQuery属性选择器,甚至jQuery的问题。
根据我的理解,你已经为编辑器创建了四个带有不同选项集的变量 - 而不是这个,为什么不创建一个具有多个属性的对象呢?
var config = {
basic: {...},
advanced: {...}
};
通过这种方式,您可以访问相应的配置:
$('textarea[tinymce]').each(function() {
var tinymceopts = $(this).attr('tinymce');
$(this).tinymce(config[tinymceopts]);
});
希望它有所帮助!
答案 2 :(得分: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/
<强>文档强>
jQuery.data
- http://api.jquery.com/data/