javascript代码如下所示。
var ADDRESS = {
checkit : function(element){
if(event.target.className == "delete"){
doSomethingweird();
} else {
doSomething();
}
}
,调用函数如下所示。
<div onclick="ADDRESS.checkit(this);">
<div class="delete">del</div>
</div>
显然,只输入'this'传入,但我也希望传递事件,以便我可以使用它来查找event.target.className。
(以上代码适用于Chrome,但目前尚未在IE中使用,因为IE似乎无法识别事件)
我应该如何更改ADDRESS.addressbook_clicked(this);
以便传递事件?
答案 0 :(得分:4)
您的HTML应该是
<div onclick="ADDRESS.checkit(this, event||window.event);">
<div class="delete">del</div>
</div>
现在,事件元素也被传递给您的事件处理程序。
警告强> 这是旧式事件处理,现在大多数人都使用非突兀的事件处理来解耦你的JS和你的HTML。
答案 1 :(得分:2)
以通常的jQuery方式绑定您的处理程序:
<div id="x">
<div class="delete">del</div>
</div>
和
$('#x').click(ADDRESS.checkit);
然后,将您的ADDRESS
更改为:
var ADDRESS = {
checkit : function(event){
// And if you need your old "element", look in "this" instead.
if(event.target.className == "delete"){
doSomethingweird();
} else {
doSomething();
}
}
};
这应解决您的跨浏览器问题,这是标准的jQuery方法。
答案 2 :(得分:0)
如果您可以保证HTML的结构,那么您可以执行以下操作:
var ADDRESS = {
checkit : function(element){
if($(this).children(".delete").length > 0){
doSomethingweird();
} else {
doSomething();
}
}