Javascript函数只适用于一个变量
Javascript function works only on one variable
我正在开发一个插件,但它现在只工作了一半。问题是,我从复选框中获得了一些变量,但该函数只对复选框的最后一个选中项(列表中)有效,而对其他项无效。
我的代码:
jQuery(document).ready(function(){
jQuery('#gap-filtedit input[type=button]').click(function(){
jQuery('.filter-checkbox:checked').each(function() {
getchecked = jQuery(this).data('rel');
val = '[gap ';
console.log(getchecked);
jQuery('.' + getchecked).each(function(){
val = val + getchecked + '=';
name = jQuery(this).find('label').data('id');
title = jQuery(this).find('input[type=text],select').val();
if (!title) title = '';
if (name != 'null') {
val = val + name + ':' + title + ', ';
}
});
});
window.send_to_editor( val );
});
});
日志将为我提供所选的选项。但是,console.log
之后的函数将仅对行中最后一个选定的函数起作用。
如何使该功能适用于每个选定的项目?
在.each语句中执行函数:
jQuery(document).ready(function(){
jQuery('#gap-filtedit input[type=button]').click(function(){
jQuery('.filter-checkbox:checked').each(function() {
getchecked = jQuery(this).data('rel');
val = '[gap ';
console.log(getchecked);
jQuery('.' + getchecked).each(function(){
val = val + getchecked + '=';
name = jQuery(this).find('label').data('id');
title = jQuery(this).find('input[type=text],select').val();
if (!title) title = '';
if (name != 'null') {
val = val + name + ':' + title + ', ';
window.send_to_editor( val );
}
});
});
});
});
循环使用的复选框时
val = '[gap '; // setting the value
在循环附加的表单字段时
...
val = val + getchecked + '='; // appending
...
val = val + name + ':' + title + ', '; // appending
...
现在,当内部循环结束并返回到外部循环时,val
被设置回[gap
(基本上擦除最后的内部循环附加)
解决方案是在click
函数中声明变量,并在第一个循环中附加(而不是设置)
示例jsfidd
jQuery(document).ready(function () {
jQuery('#gap-filtedit input[type=button]').click(function () {
var val = ""; // give variable proper scope vs creating a global
jQuery('.filter-checkbox:checked').each(function () {
getchecked = jQuery(this).data('rel');
val += '[gap '; // append instead of set
console.log(getchecked);
jQuery('.' + getchecked).each(function () {
val += getchecked + '=';
var name = jQuery(this).find('label').data('id');
var title = jQuery(this).find('input[type=text],select').val();
if (!title) title = '';
if (name != undefined) {
val += name + ':' + title + ', ';
}
});
});
window.send_to_editor(val);
});
});
旁注:
- 确定其他变量(
var title
、var name
)的范围 var name = jQuery(this).find('label').data('id');
将具有值或是undefined
(而不是"null"
)
相关文章:
- 导航到特定事件的另一个变量页面
- 我可以在Javascript/jQuery中使用一个变量作为键吗
- 使用mongodb更新中的一个变量
- 将节点数据分配给另一个变量jstree
- Javascript:在激发函数后返回一个变量以供使用
- 替换另一个变量对象中的变量值
- 什么'它的意思是当一个变量位于括号外时
- 可以't将sessionStorage设置为Javascript中的一个变量
- 在Flickr API的标签参数中传递一个变量
- 从Jquery函数中获取一个变量
- 为两个ID设置一个变量的正确语法
- 如何将变量值附加到另一个变量
- 通过加载函数发送一个变量
- 如何将一个变量从一个控制器传递到合金中的另一个控制器
- 如何在Jquery函数中为自动完成文本区域指定一个变量作为Id
- Javascript未在其中一个变量上输出0
- 保留“;这个“;在一个变量中;这个“;使用此变量
- 是否可以在另一个变量中使用未声明的变量
- JS/ANGULAR使用一个变量's值作为另一个对象的键
- 如何每秒从一个变量中提取一定次数的javascript/html