2016-11-08 24 views
7

Những tuyên bố thứ hai trong mã này:

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

sản xuất lỗi này:

Uncaught TypeError: $this.text is not a function 

Khi tôi di chuột qua $this.text() trong debugger Chrome tôi có thể thấy giá trị tôi muốn có trong title.

Làm cách nào để khắc phục lỗi này?

+2

$ đây là đối tượng DOM không, đối tượng jquery, hoặc quấn nó như $ ($ this) .text() ot $ this.innerText để đọc văn bản –

Trả lời

9

Điều này xảy ra vì bạn đang gán cho biến $this tham chiếu DOM gốc, không phải tham chiếu jQuery. Chỉ cái sau mới có quyền truy cập vào API jQuery.

Bạn đang làm điều này bằng cách 'tiếp cận bên trong' ngăn xếp jQuery giống như mảng và trích xuất tham chiếu gốc, qua [0]. Thua này và nó sẽ làm việc:

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

Công trình này hoàn hảo! Cảm ơn! – Cruncher

2

$ này là DOM đối tượng không, đối tượng jquery, hoặc quấn nó như $($this).text() hay $this.innerText để đọc văn bản

0

Vì đây là là kết quả đầu tiên, đối với tôi, khi tôi Googled điều này, tôi sẽ đăng vấn đề/giải pháp của tôi. Tôi đã viết Text() thay vì text(). tức là chữ viết hoa của tôi sai.

Các vấn đề liên quan