2010-09-30 48 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");

相關問題