2015-07-17 1 views
0

Я хочу использовать для цикла для создания функции jquery, но когда я добавляю параметр массива в строку, это не сработало. Любое предложение?Использование цикла в jquery не работает

var ids=["width_uncheck","thickness_uncheck"]; 
var names=['width','thickness']; 
for(i=0;i<2;i++){ 
    $("#"+ids[i]).click(function() { 
     $('input:radio[name='+names[i]+']').each(function(i) { 
      this.checked = false; 
     }); 
    }); 
} 
+0

Наверняка ваше имя = '+ имена ... нужны двойные кавычки следует читать 'ввода: радио [имя = " '+ имена [я] +'"]') – FirebladeDan

+0

Я попробовал, не работает. –

+0

Во втором .each'-loop вы используете «i» в качестве переменной индекса ... используйте что-то еще. –

ответ

1

Вы не можете сделать это, потому что i изменился на это максимум в момент возникновения события щелчка.

Вы должны использовать яваскрипта замыкание, которое вы можете легко сделать с $.each

$.each(ids, function(i, id){ 
    $("#"+id).click(function() { 
     // no need for `each`, just use `prop()` 
     $('input:radio[name='+names[i]+']').prop('checked',false); 
    }); 
}); 

Разница здесь в том, что i является аргументом функции и, следовательно, не изменит его значение в функции пути он будет в for цикле

0

у вас есть ошибка с селектором с именем радио вам необходимо добавить кавычки знак там Вам нужно использовать $('input:radio[name="'+names[i]+'"]')

Ток

var ids=["width_uncheck","thickness_uncheck"]; 
var names=['width','thickness']; 
for(var i=0;i<2;i++){ 
    $("#"+ids[i]).click(function() { 
     $('input:radio[name="'+names[i]+'"]').each(function(i) { 
      this.checked = false; 
     }); 
    }); 
} 
+1

будет по-прежнему сбой из-за отсутствия закрытия для 'i' – charlietfl

0

Вам не хватает кавычек для названия в селекторе.

Вы также можете использовать jquery для каждой функции без элемента для вашего массива.

$.each(ids, function (i, value) { 
    var ids=["width_uncheck","thickness_uncheck"]; 
    var names=['width','thickness']; 

    $("#"+ids[i]).click(function() { 
     $('input:radio[name="'+names[i]+'"]').each(function(i) { 
      this.checked = false; 
     }); 
    }); 
}); 
+0

, если кавычки являются проблемой (которой они не являются), почему они не проблема в вашем втором примере? – charlietfl

+0

Извините, я забыл добавить их туда. Они там сейчас. Я не проверял код, как должен был, прежде чем ответить, это именно то, что я заметил. – ijsnow

+0

не пытался дать вам трудное время ... просто указав это – charlietfl

Смежные вопросы