[英]jQuery action on each single element with multiple instances
假设我有5个div,它们的样式都相同:
的HTML
<div id="box"> </div>
<div id="box"> </div>
<div id="box"> </div>
<div id="box"> </div>
<div id="box"> </div>
的CSS
#box {
background-color:blue;
width:200px;
height:50px;
display:block;
margin-top:10px;
}
我想执行一些jQuery,以更改.mouseover()
上每个特定div的颜色,并将其更改回.mouseout()
上的原始.mouseout()
:
jQuery的
$(document).ready(function() {
$('#box').mouseover(function() {
$('#box').css('background-color', 'red');
});
$('#box').mouseout(function() {
$('#box').css('background-color', 'blue');
});
});
这仅适用于div的第一个实例,我将如何针对每个人进行这项工作? 我希望每个div都能独立工作,但我不知道该怎么做。
我研究并找到了有关.each()
但对于如何将其合并到我的函数中一无所知。 有人可以帮我吗? 先感谢您。
ID必须是唯一的 。
您可以对所有元素使用相同的类。 当您可以在CSS中使用:hover
来更改悬停时元素的样式时,无需使用Javascript。
.box { background-color: blue; width: 200px; height: 50px; display: block; margin-top: 10px; } .box:hover { background: red; }
<div class="box"></div> <div class="box"></div> <div class="box"></div> <div class="box"></div> <div class="box"></div>
正如人们所说的那样, ID必须始终是唯一的,并且如果要使用jquery
方式实现ID ,则可以按以下方式进行操作:
$(document).ready(function() { //bind class element with '.' prefixed $('.box').mouseover(function() { $(this).css('background-color', 'red'); //$(this) refers to current element here }); $('.box').mouseout(function() { $(this).css('background-color', 'blue'); }); });
.box { background-color: blue; width: 200px; height: 50px; display: block; margin-top: 10px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="box"></div> <div class="box"></div> <div class="box"></div> <div class="box"></div> <div class="box"></div>
更新
使用hover
并在性能方面进行一些改进,可以尝试如下实现:
$(document).ready(function() {
$('.box').hover(function() {
$(this).css('background-color', 'red');
},function(){
$(this).css('background-color', 'blue');
});
});
您不能查找具有相同ID的对象,而是可以使用.each
jquery函数查找ID为#box的每个div。
看起来像这个小提琴。
$(document).ready(function() {
$( "div#box" ).each(function() {
$( this ).mouseover(function(index) {
console.log( index + ": " + $( this ).text() );
$(this).css('background-color', 'red');
});
$( this ).mouseout(function(index) {
console.log( index + ": " + $( this ).text() );
$(this).css('background-color', 'blue');
});
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.