我收到未定义事件的错误
嗬!我们都应该意识到。
问题是这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可能包含其他元素(spans、ems、ps 等),请注意event.target可能不是div,它可能是 的后代元素div。this不过,将永远是div(jQuery 看到),所以:
$("#d22").click(goToEdit);
function goToEdit(event) {
tree.selectItem(this.id.substring(1));
btnMyButton_onclick();
}