1. 程式人生 > >Uncaught TypeError: $(...)[1].prev is not a function問題

Uncaught TypeError: $(...)[1].prev is not a function問題

其實是:JQuery選擇器得到的元素物件,和JavaScript獲取元素物件 的問題

上面兩張圖是我對 input元素的獲取,使用的兩種方式,pic1用的是原生JS方式,pic2使用的jQuery。

從列印結果可以看出來,第一個返回了我一個節點,而第二返回給我了一個數組。

為什麼說這個問題,是因為我最近在開發中經常碰到.prev() .attr() .find() .css()等jQuery方法無法使用的情況

說明一下:jQuery .prev()獲取同胞元素 目標前面的。

報錯是:.prev() is not a function。

原因是我將jQuery的方法用到了JS物件上。

出現這個錯誤的原因是:

無論是使用ID選擇還是什麼 JQuery得到都是一個數組物件。如上面第二個。

當只是只是唯一物件的時候我們會直接$('#pic1').prev() 使用 沒有問題。

但是當$('.className') 得到了不止一個時,我想呼叫其中的第二個就會 $('.className')[2] 而此時一個JQuery物件被我變成了一個JS 物件,所在當我使用.prev()的時候就報錯,not a function。

解決這個問題的辦法(暫時想到兩個):

一、給你想要獲取的元素加唯一的ID 或className

二、使用.eq()

.eq(n) 就是選第幾個。

$('.className').eq(2).prev();

使用了eq() 後依舊是JQuery物件,所以在使用jq方法不會報錯。