Javascript (jQuery)闪光效果:如何做到这一点
Javascript (jQuery) flasher effect: how to do that?
我想做一个闪光效果:当悬停在一些指定的字段有显示任何东西(黄色图标在我的情况下),当鼠标离开它消失。
的问题是,有很多这样的类似的领域(他们将在未来的评论),所以我已经尝试做所有这些在一个循环。但是没有用……我不知道为什么。
一些注意事项:我必须做到这一切没有html,只有在javascript中,所以我已经使用文档。写方法。
代码如下:
var data = ['one', 'two', 'three'];
for(var i in data){
(function(){
$('#id'+i).mouseover(function(){ $("#hdn"+i).show(); });
$('#id'+i).mouseout(function(){ $("#hdn"+i).hide(); });
});
document.write('<div id="id'+i+'" style="border:1px solid;margin:10px 0;float:left;width:100%;">');
document.write('<div style="float:left;width:20px;height:20px;">'+data[i]+'</div>');
document.write('<div id="hdn'+i+'" style="display:none;float:right;width:20px;height:20px;"><img src="http://t0.gstatic.com/images?q=tbn:ANd9GcSa7ebCG4VGWcTTXH8j7ebfpFWhYuV9ojisNmsrnZaQHk8wRMTNqGfaNA" /></div>')
document.write('</div>');
}
谢谢!
var data = ['one', 'two', 'three'];
$.each(data,function(i,v) {
$('<div id="id'+i+'" style="border:1px solid;margin:10px 0;float:left;width:100%;">')
.append('<div style="float:left;width:20px;height:20px;">'
+v+'</div><div id="hdn'
+i+'" style="display:none;float:right;width:20px;height:20px;"><img src="http://t0.gstatic.com/images?q=tbn:ANd9GcSa7ebCG4VGWcTTXH8j7ebfpFWhYuV9ojisNmsrnZaQHk8wRMTNqGfaNA" /></div>')
.appendTo('body')
.mouseover(function(){ $(this).children('[id^="hdn"]').show(); })
.mouseout(function(){ $(this).children('[id^="hdn"]').hide(); });
});
在写出html之前设置了事件处理程序。这不行。
另外,JavaScript中的for in循环会给你数组的索引,而不是实际值。
最好的方法是为html设置一个div,将这个html添加到它,然后让jQuery将div添加到你的body。
var newHtml = "";
for(var i = 0; i < data.length; i++) {
newHtml += '<div id="id'+i+'" style="border:1px solid;margin:10px 0;float:left;width:100%;">';
newHtml += '<div style="float:left;width:20px;height:20px;">'+data[i]+'</div>';
newHtml += '<div id="hdn'+i+'" style="display:none;float:right;width:20px;height:20px;"><img src="http://t0.gstatic.com/images?q=tbn:ANd9GcSa7ebCG4VGWcTTXH8j7ebfpFWhYuV9ojisNmsrnZaQHk8wRMTNqGfaNA" /></div>';
newHtml += '</div>';
}
var newDiv = $("<div />");
$("body").append(newDiv);
$(newDiv).html(newHtml);
for(var i = 0; i < data.length; i++) {
(function(){
$('#id'+i).mouseover(function(){ $("#hdn"+i).show(); });
$('#id'+i).mouseout(function(){ $("#hdn"+i).hide(); });
});
如果您使用类名而不是id,您可以一次影响多个元素。另外,不要使用document.write
,而是更新现有元素的innerHTML。
$('#outputDIV').html("....")
相关文章:
- 如何做到这一点,使代码在不传递条件后执行函数
- gmap3如何做到这一点-它显示圆圈的任何事件
- 硒元素在这一点上是不可点击的
- JQuery是否有一个“;移动“;作用或者有没有一种更紧凑的方法来做到这一点
- 为什么这个代码不起作用?我花了很长时间试图弄清楚这一点
- AngularJS:有没有比指定的方法更好的方法来实现这一点
- Mootorial在这一点上有多重要或过时
- Javascript递归函数引用了这一点
- 我想听听服务器上的更改,并相应地更新我的网页.我如何用Javascript做到这一点
- JavaScriptEs6在内部函数中引用了这一点
- Ajax脚本让我的服务器忙得不可开交.让其他人来做这件事
- js并在加载前编辑url-如何做到这一点
- 角度缩小2-有人成功做到这一点吗
- Javascript OOP-在异步回调中丢失了这一点
- 谷歌地图与方向 - 我可以在没有表单标签的情况下做到这一点吗?
- config.fullPage = true;在 ckEditor 内联模式下无法正常工作.如何实现这一点
- window.btoa( // here programcode // ) 如何做到这一点
- 如何在Jquery中实现这一点?(JS到Jquery)
- 如何优化这一点
- 我将如何做到这一点