2011-10-06 31 views
1

如果我包括來自jquery.com網站我的網頁上最新版本的jQuery:對象的翻譯:有沒有方法「的addEventListener」

<script src="http://code.jquery.com/jquery-latest.js"></script> 

然後3號線下面的代碼(pscript.js的):

function init() { 
    $("textbox").focus(); 
    $("textbox").addEventListener("keyup", _keytext, false); // line 3 
    $("textbox").addEventListener("blur", _save, false); 
    ... 

產生以下錯誤:

pscript.js:3 Uncaught TypeError: Object [object Object] has no method 'addEventListener'

我確認這錯誤消失,如果jQuery腳本爲n包括在內。我究竟做錯了什麼?如何在沒有錯誤的情況下包含jquery?

+2

我們可以看到'pscript.js'的第幾行? – Paulpro

+0

請向我們顯示您的代碼。 – SLaks

+0

當涉及到代碼時,圖像幾乎毫無價值。下次請使用正確的[示例代碼](http://sscce.org/)。 – outis

回答

4

實際的問題是,我已經定義$功能這樣

function $(id) { 
    return document.getElementById(id); 
} 

現在,因爲jQuery有它自己的$定義,我的定義是越來越重寫,因此意外的錯誤。

12

嘗試each直接訪問每個節點:

$("textbox").each(function(){ 
    this.addEventListener("keyup",_keytext,false); 
}); 

,或者使用一個jQuery事件處理程序的附接方法:

$("textbox").bind("keyup",_keytext); 

默認情況下,$由jQuery的定義爲返回jQuery object,節點集合(使用jQuery方法),而不是單個節點。因此,返回值沒有addEventListener方法。 bind(和on)與jQuery的使用,而不是addEventListener

如果你定義自己的$(或使用這樣做的另一個庫),你可以通過調用jQuery.noConflict()回覆的$使jQuery will coexist with other libraries定義。另外,包括其他圖書館或包括jQuery的定義後$,所以jQuery的定義將被覆蓋。

+0

但爲什麼我看不到這個錯誤,如果不包括jQuery的文件嗎? – Lazer

+0

$(「選擇」)是由至少兩庫使用。您的代碼(不包括jquery)可能會將$(「textbox」)作爲單個節點處理。你使用除jQuery之外的其他庫或工具包嗎? –

+0

你沒有看到錯誤,但你的代碼也不會工作......如果你離開jquery,所有你的jquery代碼應該會出錯......它可能會說$是未定義的(因爲你的代碼找不到$對象是jQuery的別名) – Sander

2

爲了搶你的元素,你需要提供選擇#textarea否則,jQuery將盡量選擇與textarea標籤的所有元素。

+0

另外,'input'標籤是自動關閉的,''有時可以給你在IE中遇到的麻煩。 – Dennis

相關問題