混合CSS和Javascript事件处理程序



我希望能够将相同的事件处理程序分配给许多不同的div元素。每个元素都有独特的风格。

我像这样注册了事件处理程序:

<script type="text/javascript">
function add_something() {
    document.getElementById('manipulate').onclick = do_something; 
}
function do_something(e) { 
this.style.property = value;
}
window.onLoad = add_something;
</script>

所以我可以给一个元素分配一个事件处理程序,像这样:

<div id="manipulate"></div>

问题是,我想把这个处理程序分配给几个元素,每个元素都有一个独特的样式,我想用CSS来做到这一点。但我不知道该怎么做。

最后,我想要这样的东西:

 <style>
 #element1{...}
 #element1{...}
 #element1{...}
 </style>

<div id="element1" class="manipulate"></div>
<div id="element2" class="manipulate"></div>
<div id="element3" class="manipulate"></div>

这可能吗?由于

事件委托?

HTML:

<div id="wrap">
    <div id="element1" class="manipulate">First element</div>
    <div id="element2" class="manipulate">Second element</div>
    <div id="element3" class="manipulate">Third element</div>
</div>
JavaScript:

var wrap = document.getElementById('wrap');
wrap.onclick = function (e) {
    var elem = e.target;
    elem.style.color = 'red';
};

现场演示: http://jsfiddle.net/VLcPw/

你可以在现代浏览器中按类选择元素,或者只使用jQuery,它可以在任何地方工作。

$(document).ready(function(){
   $('.manipulate').click(function(){alert('Hello.')});
   //or .hover/any other event.
});
jQuery事件。

也许有一个更相关的例子?
$('.manipulate').click(function(){
   $(this).addClass( 'whateverClass' );
   //or
   $(this).css('color', 'red');
});

为什么你不给jquery一个尝试?

使用jquery,你只需要将相同的click事件绑定到所有相应的元素:


    $("div.manipulate").click(function(e) {
        $(this).css(property, value);
    });

property必须被替换为一个有效的CSS属性,value必须是正确的。

最新更新