Javascript 在 Wordpress 中附加重复数据的插件
Javascript plugin appending duplicate data in Wordpress
我正在使用一个名为 curry.js that's being called on a custom Wordpress page 的货币转换插件,带有 bootstrap 选项卡和高级自定义字段。
当 WP 循环遍历每个选项卡时,它会附加到货币列表中,这样当您在第三个选项卡中打开下拉菜单时,您会看到重复三次的货币列表。
这里的代码部分 curry.js 每次都是 运行:
var generateDDM = function( rates ){
output = '';
// Change all target elements to drop downs
dropDownMenu.each(function(){
for (var i in rates ) {
rate = rates[i];
output += '<option value="'+ i +'" data-rate="'+ rate +'">' + i + '</option>';
}
$( output ).appendTo( this );
});
};
我尝试在该代码块之外创建一个 counter
变量,以便在它运行一次并创建货币列表后,将该列表存储在全局 output
变量中不再追加,但无济于事。
如果需要进一步说明,我很乐意提供 - 任何帮助都将非常棒我已经花了很多时间试图解决这个问题,我知道这应该是一个非常简单的解决方案。
谢谢!
在javascript中,代码是异步执行的,这意味着不能保证仅在第一行代码执行后才执行第二行代码。所以也许这就是为什么 counter
变量值对全局 output
变量不可见的原因。有关详细信息,请参阅这篇精彩文章 Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference
通过检查每个 WP 循环后输出变量的长度的简单 if 语句解决了这个问题:
dropDownMenu.each(function(){
if(output.length < 251) {
for ( var i in rates ) {
rate = rates[i];
output += '<option value="'+ i +'" data-rate="'+ rate +'">' + i + '</option>';
}
$( output ).appendTo( this );
}
else {
$( output ).appendTo( this );
}
});
我正在使用一个名为 curry.js that's being called on a custom Wordpress page 的货币转换插件,带有 bootstrap 选项卡和高级自定义字段。
当 WP 循环遍历每个选项卡时,它会附加到货币列表中,这样当您在第三个选项卡中打开下拉菜单时,您会看到重复三次的货币列表。
这里的代码部分 curry.js 每次都是 运行:
var generateDDM = function( rates ){
output = '';
// Change all target elements to drop downs
dropDownMenu.each(function(){
for (var i in rates ) {
rate = rates[i];
output += '<option value="'+ i +'" data-rate="'+ rate +'">' + i + '</option>';
}
$( output ).appendTo( this );
});
};
我尝试在该代码块之外创建一个 counter
变量,以便在它运行一次并创建货币列表后,将该列表存储在全局 output
变量中不再追加,但无济于事。
如果需要进一步说明,我很乐意提供 - 任何帮助都将非常棒我已经花了很多时间试图解决这个问题,我知道这应该是一个非常简单的解决方案。
谢谢!
在javascript中,代码是异步执行的,这意味着不能保证仅在第一行代码执行后才执行第二行代码。所以也许这就是为什么 counter
变量值对全局 output
变量不可见的原因。有关详细信息,请参阅这篇精彩文章 Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference
通过检查每个 WP 循环后输出变量的长度的简单 if 语句解决了这个问题:
dropDownMenu.each(function(){
if(output.length < 251) {
for ( var i in rates ) {
rate = rates[i];
output += '<option value="'+ i +'" data-rate="'+ rate +'">' + i + '</option>';
}
$( output ).appendTo( this );
}
else {
$( output ).appendTo( this );
}
});