我发现这段代码随机创建了一些div:
(function makeDiv(){
var divsize = ((Math.random()*100) + 50).toFixed();
var color = '#'+ Math.round(0xffffff * Math.random()).toString(16);
$newdiv = $('<div/>').addClass("destruct").css({
'width':divsize+'px',
'height':divsize+'px',
'background-color': color
});
var posx = (Math.random() * ($(document).width() - divsize)).toFixed();
var posy = (Math.random() * ($(document).height() - divsize)).toFixed();
$newdiv.css({
'position':'absolute',
'left':posx+'px',
'top':posy+'px',
'display':'none'
}).appendTo( 'body' ).fadeIn(500, function(){
makeDiv();
});
})();
但是我希望div一个接一个地转动为黑色。
$(document).ready(function() {
$('.destruct').hover( function(){
$('.destruct', this).css({background: '#000'});
});
});
但它不起作用......
答案 0 :(得分:4)
因为你的div是动态生成的,请尝试:
$(document).ready(function() {
$(document).on('mouseover', '.destruct', function(){
$(this).css({background: '#000'});
});
});
如果您使用旧版本的jquery,(&gt; 1.7),请使用:
$(".destruct").live("mouseover", function(){
$(this).css({background: '#000'});
});
答案 1 :(得分:1)
有几种方法可以做到这一点。一个是事件授权:
这会将绑定更改为:
$(document).on('hover', '.destruct', function(){
$(this).css({background: '#000'});
});
...但我会尝试使用比document
更具体的选择器。
另一个解决方案是绑定hover
(或者在这种情况下为mouseover
,因为它应该足够了)在创建时单独回调每个div,但这可能导致很多单独的事件绑定。
答案 2 :(得分:1)
您可以在创建div时绑定.mouseenter()
,也可以将.mouseenter()
绑定到文档(事件委派),如其他答案所指出的那样。我将采用第一种方法。 Updated demo
(function makeDiv(){
var divsize = ((Math.random()*100) + 50).toFixed();
var color = '#'+ Math.round(0xffffff * Math.random()).toString(16);
$newdiv = $('<div/>').addClass("destruct").css({
'width':divsize+'px',
'height':divsize+'px',
'background-color': color
})
// Magic happens here!
.mouseenter(function(){
$(this).css({background: '#000'});
});
var posx = (Math.random() * ($(document).width() - divsize)).toFixed();
var posy = (Math.random() * ($(document).height() - divsize)).toFixed();
$newdiv.css({
'position':'absolute',
'left':posx+'px',
'top':posy+'px',
'display':'none'
}).appendTo( 'body' ).fadeIn(500, function(){
makeDiv();
});
})();