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);しかし、を実際の変数の 1 つ に置き換えると、$(this).tinymce(basicoptions); 問題なく動作します。

実際には 4 つの変数を使用していますが、上記の 2 つだけを示しています。

これを行うより良い方法はありますか?

4

3 に答える 3

0

これは、jQuery属性セレクター、さらにはjQueryに関してはまったく問題ではないようです。

私の理解では、エディターのオプションのセットが異なる4つの変数を作成しました。これの代わりに、複数のプロパティを持つ1つのオブジェクトを作成してみませんか?

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 ) メソッドを使用して、2 次変数を使用せずにオプションを直接取得できます。

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 に答える
0

質問を読み直した後、属性に似た名前の変数にアクセスするだけでよいようです。それがグローバル変数であると仮定すると、次のようにします。

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

文字列「basicoptions」をメソッドに渡す代わりに、スコープが実際にグローバルレベルにあると仮定して、変数にマップする必要がtinymceある変数を参照しています。そうでない場合は、適切な名前空間に置き換えてください。window.basicoptionsvar basicoptionswindow

于 2013-02-27T23:03:59.540 に答える