我收到未定义事件的错误
嗬!我们都应该意识到。
问题是这event
在大多数浏览器上不是全局的,尽管它在 IE 上,并且 Chrome 通过使其成为全局以及做它应该做的事情(将它传递到事件处理函数)向为 IE 设计的网站抛出了一块骨头。
到目前为止,您最好的选择是根本不使用onclick="code"
(见下文),但您也可以这样做:
<div id="22" class="otherClass" onclick="goToEdit(event);">Title</div>
...应该可以跨浏览器工作。它之所以有效,是因为该event
对象是在调用处理程序的特殊上下文中定义的onclick
(在以标准方式执行此操作的浏览器上),或者它是一个全局对象(在 IE 上),因此无论哪种方式,它都是在该点定义的(但不一定,作为一个全局的,稍后在你的goToEdit
函数中——这就是我们将它作为参数传递的原因)。
但同样,我不会那样做。相反,我会通过让id
值以字母开头来使值对 CSS 有效,并使用 jQuery 连接处理程序:
HTML:
<div id="d22" class="otherClass">Title</div>
JavaScript:
$("#d22").click(goToEdit);
function goToEdit(event) {
tree.selectItem(event.target.id.substring(1));
btnMyButton_onclick();
}
笔记:
- 在传递它之前,我从值
d
的开头删除了id
它。我想这是22
有原因的。
- 没有理由这样做
$(event.target).attr('id')
,直接使用event.target.id
。
如果div
可能包含其他元素(span
s、em
s、p
s 等),请注意event.target
可能不是div
,它可能是 的后代元素div
。this
不过,将永远是div
(jQuery 看到),所以:
$("#d22").click(goToEdit);
function goToEdit(event) {
tree.selectItem(this.id.substring(1));
btnMyButton_onclick();
}