Object [object Object]没有方法'addEventListener'

时间:2011-10-06 19:29:27

标签: javascript jquery html

如果我在页面上的jquery.com网站上包含最新版本的jQuery:

<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]没有方法'addEventListener'

我确认如果不包含jquery脚本,这个错误就会消失。我究竟做错了什么?如何在没有错误的情况下包含jquery?

3 个答案:

答案 0 :(得分: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 will coexist with other libraries来恢复$的定义,以便jQuery.noConflict()。或者,包括其他库或在包含jQuery之后定义$,因此jQuery的定义将被覆盖。

答案 1 :(得分:4)

实际问题是我已经定义了$这样的函数

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

既然jQuery有自己的$定义,我的定义被覆盖了,因此意外错误。

答案 2 :(得分:2)

为了获取你的元素,你需要提供选择器#textarea否则,jQuery将尝试用textarea标签选择所有元素。