JavaScript - 为多个元素设置onmouseover而不使用:hover

时间:2013-02-09 10:40:11

标签: javascript events hover

我有什么方法可以通过不使用:hover并且不在所有元素中添加“onmouseover和onmouseout”,就像在脚本中设置onmouseover和onmouseout所有输入元素的有效方式。

注意:在尝试使用JQuery之前请尝试使用JavaScript


<head>

    <title>123</title>

    <style>

    .button {
    color: red;
    }

    .button:hover {
    color: blue;
    }

    </style>

</head>

<body>

    <div>

        <input class="button" type="button" value="1">

        <input class="button" type="button" value="2">

        <input class="button" type="button" value="3">

    </div>

</body>

3 个答案:

答案 0 :(得分:1)

不是我推荐这个,但您可以尝试在body元素上放置mouseover的事件处理程序,然后使用event.target / event.srcElement来确定是否要处理该事件<或者

document.body.addEventListener("mouseover",function(e) {
    e = e || window.event;

    var targetElem = e.target || e.srcElement;

    // you can use a switch on the nodeName and handle event
    switch(targetElem.nodeName) {
        case 'INPUT':
            // do something
        break;
    }
},false);

示例JS小提琴(背景颜色变化)http://jsfiddle.net/Rcgx5/

答案 1 :(得分:0)

使用input标记

循环遍历所有元素
a=document.getElementsByTagName('input')
for (i in a){
   a[i].onmouseover=function(){/* code goes here */}
   a[i].onmouseout=function(){/* code goes here */}
}

使用jQuery:

$('input').on('mouseover',function(){/* code goes here */}).on('mouseout',function(){/* code goes here */})

答案 2 :(得分:0)

你可以试试这个

window.onload=function(){
    document.onmouseover=function(e){
        var e = e || window.event, el = e.target || el.srcElement;
        if(el.type == 'button') el.style.color='red';
    };

    document.onmouseout=function(e){
        var e = e || window.event, el = e.target || el.srcElement;
        if(el.type == 'button') el.style.color='black';
    };
};

DEMO.