Javascript jQuery.each未在函数中运行
我正在处理一个项目,其中一些表单元素依赖于另一个表单输入来获得某个值,或者在显示该输入之前可能有多个具有特定值的元素 其思想是,在生成表单时,每个输入的包装div都有一个datadependen属性,该属性包含一个逗号分隔的列表,其中列出了它所依赖的每个字段以及它所期望显示的每个字段的值 我几乎有了前端/JavaScript代码来完成提升,但出于某种原因,我的jQuery.JavaScript函数中的每个()循环都没有运行,即使我已经确认了我试图循环的数组。有内容,b。函数实际上是在预期的时候被调用的 首先,我有实际的函数调用(每当依赖项输入发生更改时调用): 然后是函数checkShowField()定义:Javascript jQuery.each未在函数中运行,javascript,jquery,Javascript,Jquery,我正在处理一个项目,其中一些表单元素依赖于另一个表单输入来获得某个值,或者在显示该输入之前可能有多个具有特定值的元素 其思想是,在生成表单时,每个输入的包装div都有一个datadependen属性,该属性包含一个逗号分隔的列表,其中列出了它所依赖的每个字段以及它所期望显示的每个字段的值 我几乎有了前端/JavaScript代码来完成提升,但出于某种原因,我的jQuery.JavaScript函数中的每个()循环都没有运行,即使我已经确认了我试图循环的数组。有内容,b。函数实际上是在预期的时候被
function checkShowField(keyed_dependencies, current_values, targeted_element)
{
var hide_field = null;
jQuery.each(keyed_dependencies, function(key, value)
{
if (value != current_values[key] && hide_field == null)
hide_field = false;
});
if (hide_field == null)
$(targeted_element).slideDown();
else
$(targeted_element).slideUp();
}
另外请注意,函数调用被放置在正确的位置,并且实际上正在被调用。我只是在这里添加了代码,向大家展示函数调用的上下文。函数调用包装在$(document).ready(function(){…})中
如您所见,在函数“checkShowField”中,我有一个jQuery。每个循环都应该在键控依赖项数组中循环,但实际上,循环甚至没有运行过一次。想法?看起来键控依赖项并不是你想象的那样。尝试在
之前添加调试器;
语句。每个行,可能也在函数中。然后se inspector/debugger检查变量中的数据。您可以检查参数列表中的键控依赖项是否有属性length
。如果是这样,jQuery假设有一个数组,实际上可能无法运行循环
如果是这种情况,请尝试使用vanilla JS:
for (var key in keyed_dependencies) {...}
希望这能有所帮助。你能定义键控元素依赖项
,当前值
,目标元素
?正如我所说的,键控元素依赖项确实有内容-我已经仔细检查了这一点。这是一个包含内容的数组。实际上,我认为你可能在这里找到了一些东西。由于某种原因,键控元素的长度keyed_dependencies是0,即使它在数组中只有一个元素。想法?如何定义keyed_dependencies
?您是实例化类(因此您只继承了属性)还是使用普通数组对象?它是普通数组对象。keyed_dependencies=[];被实例化,然后使用关联键添加元素,并将其传递给checkShowField()。此外,当我使用常规for循环时,正如您所建议的那样,它可以工作……您能解释一下是什么导致了这种情况吗?感谢您的帮助!这可能是问题所在吗?jQuery假设一个数组(因为像所有数组一样,keyed\u dependencies
具有属性length
。但是:您使用的是非数字键。jQuery。每个都使用数字键来运行循环,如果您向其传递一个实际数组。因此,循环将失败。不幸的是……它是。我已经这样做了,并且它是一个预期的数组,这就是为什么我无法运行它的原因。)重新定义它。一定是我忽略了什么。这可能是jQuery中两种不同类型的each()
造成的混淆吗?如果它确实是一个数组,为什么不使用本机forEach()
?
for (var key in keyed_dependencies) {...}