我的代码中有这个:
<div class="someClass">
<div id="22" class="otherClass" onclick="goToEdit();">Title</div>
<div class="parent">Other title</div>
</div>
和
function goToEdit()
{
tree.selectItem($(event.target).attr('id'));
btnMyButton_onclick();
}
在Chrome中一切正常,但在Mozilla中它不会对点击事件做出反应。为什么呢?
答案 0 :(得分:2)
我收到未定义事件的错误
Doh!我们都应该意识到。
问题是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
可能包含其他元素(em
s,p
s,event.target
s等),请注意div
可能不是div
,它可能是this
的后代元素。 div
永远是$("#d22").click(goToEdit);
function goToEdit(event) {
tree.selectItem(this.id.substring(1));
btnMyButton_onclick();
}
,但是(jQuery看到了),所以:
{{1}}
答案 1 :(得分:1)
尝试将对元素的引用传递给函数。
... onclick="goToEdit(this);">
和
function goToEdit(element)
{
tree.selectItem($(element).attr('id'));
btnMyButton_onclick();
}
答案 2 :(得分:0)
HTML名称和ID令牌必须以字母开头。你有id="22"
。也许它会导致浏览器之间的不一致。请参阅:http://www.w3.org/TR/html4/types.html
答案 3 :(得分:0)
根据定义,div用于将您的页面划分为不同的部分。 使用锚点或带有类型按钮标签的输入
答案 4 :(得分:0)
我也遇到了同样的问题,但是这段代码帮助了我。
我正在测试Mozilla Firefox和Chrome,它同时适用于这两种方式。
<input type="button" onclick="return goBack();" class="btn btn-warning cancel" value=" Cancel" style="color:white" />
<script>
function goBack() {
window.history.back();
}
</script>