如何在javascript中传递事件?

时间:2011-06-06 22:04:05

标签: javascript jquery

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);以便传递事件?

3 个答案:

答案 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();
    }
}