4

WordPress ShortCode タブを作成し、このコードを記述してショートコードを収集します

jQuery('body').on('click', '#tapSubmit',function(){
    var shortcode = '[tapWrap]';
    jQuery('.tapForm').each(function(){
        var title = jQuery('.Title').val(),
            content = jQuery('.Content').val(),
            shortcode += '[tap ';
        if(title){shortcode += 'title="'+title+'"';}
        shortcode += ']';
        if(content){shortcode += ''+content+'';}
        shortcode += '[/tap]';
    });
    shortcode += '[/tapWrap]';

    tinyMCE.activeEditor.execCommand('mceInsertContent', false, shortcode);
});

そして、私はこのエラーが発生します

Uncaught SyntaxError: Unexpected token if 

http://jsfiddle.net/のコードを試してみると、このコードを持つ行でこのエラーが発生しました

shortcode += '[tap ';
Expected an assignment or function call and instead saw an expression.

それを修正する方法?

4

2 に答える 2

3

問題はここに来ています

var title     = jQuery('.Title').val(),
    content   = jQuery('.Content').val(),
    shortcode += '[tap ';

shortcodeは既に上で定義された var です。式+=では使用できませんvar

これを次のように変更するだけです

var title     = jQuery('.Title').val(),
    content   = jQuery('.Content').val(); // note the semicolon here

shortcode += '[tap ';

ネスティングの問題にも遭遇すると思います。ループの反復ごとに呼び出す代わりに、orjQuery('.Content').val()のようなものを探していると思います。これにより、指定された のスコープ内で関連する入力が見つかります。$(this).find('.Content').val()$('.Content', this).Content.tapForm

みたいなことを考えてますが、ただの思いつきです

jQuery('body').on('click', '#tapSubmit', function(){

  function title(context) {
    var value = jQuery(".Title", context).val();
    return value ? 'title="' + value + '"' : '';
  }

  function content(context) {
    var value = jQuery(".Content", context).val();
    return value || '';
  }

  var taps = jQuery('.tapForm').map(function(){
    return '[tap ' + title(this) + ']' + content(this) + '[/tap]';
  }).join();

  tinyMCE.activeEditor.execCommand('mceInsertContent', false, '[tapWrap]' + taps + '[/tapWrap]');  
});
于 2013-08-26T20:13:32.797 に答える