jQuery.each没有在函数中运行

时间:2015-11-29 19:21:21

标签: javascript jquery

我正在开发一个项目,其中某些表单元素依赖于另一个表单输入以具有特定值,或者可能在显示该输入之前具有特定值的多个元素。

这个想法是,当生成表单时,每个输入的包装div都有一个data-depends-on属性,每个字段都有一个逗号分隔的列表,它依赖于要显示的每个字段,以及每个字段的值。它期望被展示。

我差不多要使用前端/ JavaScript代码来完成提升,但由于某些原因我的JavaScript函数中的jQuery.each()循环没有运行,即使我已经确认了我正在尝试的数组循环通过。有内容,和b。当预期这样做时,实际上正在调用该函数。

首先,我有实际的函数调用(每当更改依赖项输入时调用):

checkShowField(keyed_depends, current_vals, targeted_element);

然后是函数checkShowField()定义:

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.each循环应该循环通过keyed_dependencies数组,但实际上,循环甚至没有运行一次。想法?

2 个答案:

答案 0 :(得分:0)

看起来keyed_dependencies并不是你认为的那样。尝试在debugger;行之前添加.each语句,也可以在函数中添加<form action='filter2.php' method='post' name='value' > <select name="value"> <option value="project_name">project_name</option> <option value="stage">stage</option> <option value="project_details">project_details</option> </select> <br /> <input type='submit' value = 'Filter'> </form> <?php // Authentication Variables $servername = "localhost"; $username = "basic"; $password = "redrobinX123"; $dbname = "basic_forms1"; // Make connection $con = mysqli_connect($servername, $username, $password, $dbname); // If error connecting if (!$con) { die(mysqli_error("could not connect")); } // If post value isset if(isset($_POST['value'])) { $column = $_POST['value']; // Set Column $query = "SELECT ". $column . " FROM photo"; // Create Query $sql = mysqli_query($con,$query); // Run Query // Loop through results while ($row = mysqli_fetch_array ($sql)){ echo "<br>". $row[$column] . "<br>"; } // Close connection mysqli_close($con); } ?> 语句。然后使用检查器/调试器查看变量中的数据。

答案 1 :(得分:0)

您可以检查参数列表中的keyed_dependencies是否具有属性length。如果是这样,jQuery假设一个数组,实际上可能无法循环运行。

如果是这种情况,请尝试使用vanilla JS:

for (var key in keyed_dependencies) {...}

希望有所帮助。