2015-11-29 3 views
0

Я работаю над проектом, в котором некоторые элементы формы зависят от ввода другой формы, чтобы иметь определенное значение или, возможно, несколько элементов с определенными значениями, прежде чем этот ввод будет показан.jQuery.each не работает в функции

Идея состоит в том, что при создании формы разделитель для каждого входа имеет атрибут, зависящий от данных, с разделенным запятыми списком каждого поля, которое зависит от его отображения, и значения для каждого что он будет показан.

У меня почти есть код front-end/JavaScript, чтобы сделать подъем, но по какой-то причине мой цикл jQuery.each() в функции JavaScript не работает, хотя я подтвердил массив, в котором я пытаясь выполнить цикл. имеет содержание и 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 массив, но в действительности, цикл не работает, даже один раз. Мысли?

+0

Можете ли вы определить 'keyed_depends',' current_vals', 'target_element'? –

ответ

0

Вы можете проверить, есть ли keyed_dependencies в списке аргументов length. Если это так, jQuery принимает массив и может фактически не запустить цикл.

Если это так, то попробуйте использовать ванильный JS:

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

Надежда, что помогает.

+0

Как я считаю, я сказал, что keyed_dependencies имеет контент - у меня есть двойная и тройная проверки. Это массив с контентом. –

+0

На самом деле, я думаю, что вы можете быть здесь. По какой-то причине длина keyed_dependencies равна 0, хотя она имеет один элемент в массиве. Мысли? –

+0

Как вы определяете '' keyed_dependencies''? Вы создаете экземпляр класса (так что у вас есть только унаследованные свойства) или вы используете простой массив-объект? –

0

похоже, что keyed_dependencies не совсем то, что вы думаете. Попробуйте добавить debugger; заявления до .each линии и, возможно, в функции Кроме того, используйте инспектор/отладчик для просмотра данных в переменных.

+0

К сожалению ... это так. Я сделал это, и это массив, как ожидалось, поэтому я не могу понять это. Должно быть кое-что, что я пропускаю. http://prntscr.com/98eti5 –

+0

Это может быть путаница в jQuery из двух разных типов 'each()' it has? Если это действительно массив, почему бы не использовать собственный 'forEach()'? – edoceo