我创建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.
如何解决?
答案 0 :(得分:4)
当你有
时var title = jQuery('.Title').val(),
content = jQuery('.Content').val(),
shortcode += '[tap ';
您正在该链中定义新变量,但已定义shortcode
,因此您要在此范围内创建新变量。作为新变量,您无法使用+=
。无论如何,我想你只想用这个:
var title = jQuery('.Title').val(),
content = jQuery('.Content').val(); // changed the last comma with semicolon
shortcode += '[tap ';
答案 1 :(得分: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 ';
我认为你也会遇到一些嵌套问题。我认为您正在寻找更像jQuery('.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]');
});