2010-09-30 50 views
0

我使用此代码将一个元素添加到窗体。然后我计算该类的元素总数。但是,Jquery .length会返回元素数量的两倍。为什么JQuery返回错误的长度?

任何想法我做错了什么?

$(function() { 
    function updateWeight() { 
     var z = $("input.count").length; 
     alert(z); 
    } 
    $("#addCatalogItem").autocomplete({ 
     source: function (request, response) { 
      $.getJSON("inventory_auto_complete.php", { 
       term: request.term, 
       supplier_id: $('#supplier_id').val() 
      }, response); 
     }, 
     minLength: 2, 
     select: function (event, ui) { 
      var q = ui.item.product_id; 
      $('#product_id').val(q); 
      var r = ui.item.value; 
      $('#product').val(r); 
      var field = '<label>' + r + '</label><input class=\"count\" type=\"text\" value=\"\" name=\"field[' + q + ']\"/>'; 
      var $item = $("form"); 
      $(field).appendTo($item); 
      updateWeight(); 
     } 
    }); 
}); 

HTML

<form> 
    <input type="hidden" id="supplier_id" value="1"/> 
    <input id="addCatalogItem"/> 
</form> 
+1

你看过你动态创建的HTML吗? – 2010-09-30 02:13:24

+0

@matt:我会说使用Firebug来检查生成的html会非常有帮助。 – 2010-09-30 02:18:56

+0

不要怪'长度'或'jQuery'。问题出在你的代码中。如果你可以放置HTML,那也可以帮助我们找出问题所在。问题:你有多少'alert(z)'? – Reigel 2010-09-30 02:22:07

回答

1

var $item = $("form");将采取在页面中的所有形式。也许你在页面的某处有其他表单。

simple test caseYi Jiang表明您的代码应该完美工作。

Here's a test case证明与您的问题相同的结果。

我的建议是你给表格一个ID然后用它作为选择器,var $item = $("#formID");

相关问题