如果我在页面上的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?
答案 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标签选择所有元素。