我有一个插件,我正在为后端的wordpress创建。在一个部分中,用户可以将文本输入文本框。我想更新屏幕顶部的列表,其中包含每次提取密钥时输入的所有短代码及其值。
为此,我编写了以下代码用于测试目的:
$("#BBPlugin-Pages").on("keyup",".BBtextArea",function(e){
var match = wp.shortcode.next("code", _2upstring, 2);
if ( ! match ) {
return;
}
else console.log(match.content);
});
所以现在,如果我输入[code] words [/ code],当我输入任何内容时它将返回,但是,如果我稍后在文本框中添加另一个短代码,该代码读取[code] word2 [/ code],它也不会被返回,只返回第一个短代码。有两种方法可以退货吗?
答案 0 :(得分:0)
请查看here。
wp.shortcode.next(标签,文字,索引)
返回 类型:对象 具有一些有用属性的容器对象:
index:匹配发生的索引,因此您可以使用匹配的索引加1来轻松匹配下一个短代码。
var index = 2; // yours initial value - don't know why 2
$("#BBPlugin-Pages").on("keyup",".BBtextArea",function(e){
var match = wp.shortcode.next("code", _2upstring, index);
if ( ! match ) {
return;
}
else {
index = match.index + 1;
console.log(match.content);
}
})
无法测试 - 但想法是保存当前匹配的索引。并从下一个字符开始新的搜索。
P.S。如果有人可以测试这个 - 如果smth错误,请编写正确的代码示例。
upd:记录下来。 (应该工作,但无法测试环境 - 你应该注意这个想法)
var index = 2; // yours initial value - don't know why 2
var all = [];
$("#BBPlugin-Pages").on("keyup",".BBtextArea",function(e){
var match = wp.shortcode.next("code", _2upstring, index);
if ( ! match ) {
return;
} else {
index = match.index + 1;
all.push( match.content );
console.log(all); // as array
all.forEach(function(x){ console.log(x); }); // one at a time
}
})