.width()给出错误$(...)[0] .width不是函数?

时间:2016-01-04 15:03:23

标签: jquery

我有一张桌子,我试图找到表格中每个td的宽度。我尝试了$("td")[0].width()的各种变体,但没有一个变得有效,每次都会收到错误:"Uncaught TypeError: $(...)[0].width is not a function"

我首先导入jQuery,然后导入其他JS文件(https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js),并且我使用.width()而不是.width。

有什么想法吗?

4 个答案:

答案 0 :(得分:5)

$("td")[0]是一个DOM元素,而不是一个jquery对象。只需将其包装为jquery $($("td")[0]).width()

即可

您需要获得每个td的宽度,以便您可以使用类似

的内容
$.each('td', function() {
    var currentTDWidth = $(this).width(); // more code here
});

答案 1 :(得分:2)

当你说我试图找到表格中每个td的宽度时,你需要使用.each()循环tds ..

$('td').each(function(){
   alert($(this).width());
});

并选择具体的td还有更多方法

使用:eq()选择器

$('td:eq(0)');   // index start from 0
jquery中的

.eq()

$('td').eq(0)        // index start from 0

:nth-child()选择器

$('td:nth-child(1)');    // index start from 1

答案 2 :(得分:1)

使用eq(0)代替[0]来保留具有width()函数的jQuery对象。

答案 3 :(得分:1)

$("td")[0]

是DOM Level元素而不是jQuery对象。并且.width()是一个jQuery方法,所以你实际上不能在它上面使用它。 执行以下任一操作:

$("td").eq(0).width(); // On a jQuery object
$("td")[0].offsetWidth; // On a DOM Level Element.

要获取所有元素的宽度,请使用.each

$('td').each(function(){
   alert($(this).width());
});