将JQuery数组传递给嵌套函数

Passing JQuery Arrays to Nested Function

本文关键字:嵌套 函数 JQuery 数组      更新时间:2023-09-26

我在使用存储在两个数组(类别处理)中的数据动态添加行到表时遇到问题。数组没问题,我已经确定了。

当只传递类别数组时,新行显示,但选择框读取[object:object],显然是空白的。

当我传入第二个数组时,如下所示,控制台读取'undefined is not a function'。

任何帮助将非常感激!

 // Add an extra row when button is clicked
 var counter = 1;
   $('input.add').click(categories, treatments, function(){
      counter++;      
      var newRow = '<tr><td><label for="category' + counter + '">Category</label></td><td><select id="category' + counter + '" name="category' + counter + '" required="required">';      
      $.each(categories, function(key, value) {   
      $('#category' + counter)
         newRow += '<option value ="' + key + '">' + value + '</option>';
      });
      newRow += '</select></td><td><label for="treatment' + counter + '">Treatment</label></td><td><select id="treatment' + counter + '" name="treatment' + counter + '">';
      $.each(treatments, function(key, value) {   
      $('#treatment' + counter)
         newRow += '<option value ="' + key + '">' + value + '</option>';
      });    
      newRow += '</select></td></tr>';     
      $('table.treatments').append(newRow);
   });
});

jQuery .click()的第一个参数是一个Object,你试图传递两个数组。

这应该适合您(记住检查缺少分号):

// Create an Object obj containing the two arrays.
$('input.add').click(obj = { categories: categories, treatments: treatments }, function () {
    counter++;
    var newRow = '<tr><td><label for="category' + counter + '">Category</label></td><td><select id="category' + counter + '" name="category' + counter + '" required="required">';
    // Use the obj.
    $.each(obj.categories, function (key, value) {
        $('#category' + counter);
        newRow += '<option value ="' + key + '">' + value + '</option>';
    });
    newRow += '</select></td><td><label for="treatment' + counter + '">Treatment</label></td><td><select id="treatment' + counter + '" name="treatment' + counter + '">';
    // Use the obj.
    $.each(obj.treatments, function (key, value) {
        $('#treatment' + counter);
        newRow += '<option value ="' + key + '">' + value + '</option>';
    });
    newRow += '</select></td></tr>';
    $('table.treatments').append(newRow);
});

演示

jQuery .click ()