JSFiddle 本身不工作;找不到元素?

JSFiddle itself not working; can't find elements?

我有一个超级简单的 fiddle... 但是当我检查元素时,$("#cart table") 坦率地说 $("#add")$("#remove")$("#cart")所有 return null 即使这些项目在页面上...我做错了什么?

(因此我的台词被打破了$("#cart table").find("tr").length()https://jsfiddle.net/qb3a6j31/

基本上,length是一个属性,不是函数,

$("#cart table").find("tr").length

DEMO

你的完整代码是,

$(document).on("click", "#add", function(e) {
  e.preventDefault();
  var next_item_number = parseInt($("#cart table").find("tr").length) + 1
  var item =
  '<tr>' +
    '<td>Item #' + next_item_number + '</td>' +
    '</tr>'
  $("#cart table").append(item)
});

您已将 length 用作函数,但它是 属性。使用 length 而不是 length()

$("#cart table").find("tr").length

UPDATED FIDDLE

1) 你没有在你的 jsFiddle

中加载 jQuery

2) 这行不通

$("#cart table").find("tr").length()

...因为当您最初单击添加按钮时没有 table 行可用。

3) 当你有行时,它是 .length

我倾向于这样写。它获取行,如果有一些使用length,否则1

var $rows = $("#cart table").find("tr");
var next_item_number = parseInt($rows.length || 1, 10);

DEMO

Uncaught TypeError: $(...).find(...).length is not a function

length 是数值 属性,不是函数。将您的代码替换为:

parseInt($("#cart table").find("tr").length)

它会起作用的。注意:您可能希望向 parseInt.

添加显式的 10 基数参数