未捕获的类型错误:$this.text不是一个函数。

15

代码中的第二个语句:

var $this = $(this).children('div.submenu1').children('a.subtile')[0],
title = $this.text(),
name = $this.attr('node').val;

产生了这个错误:

Uncaught TypeError: $this.text is not a function
当我在Chrome调试器中悬停在$this.text()上时,我可以看到我想要放入title中的值。如何修复这个错误?

2
$this 是 DOM 对象,不是 jQuery 对象,如果要读取文本,请使用 $($this).text() 或 $this.innerText 进行包装。 - A.T.
4个回答

17

这是因为您将一个原生DOM引用分配给变量$this,而不是jQuery引用。只有后者才能访问jQuery API。

您可以通过“深入”类似数组的jQuery堆栈并提取原生引用(通过[0])来实现此操作。去掉它就可以正常工作:

var $this = $(this).children('div.submenu1').children('a.subtile'),
title = $this.text(), //<-- now has access to jQuery API

6

$this 是一个 DOM 对象,而不是 jQuery 对象。如果要读取文本,请将其包装为 $($this).text() 或者 $this.innerText


-2

我曾经遇到过同样的问题,最终发现是我的浏览器禁用了JavaScript。请确保启用JavaScript以加载页面。


-2
作为这个问题在我谷歌搜索时的第一个结果,我将发布我的问题/解决方案。我写成了Text()而不是text(),即我的大小写使用错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接