Jquery:将 "each" 附加到 "on" 事件
Jquery: Attaching "each" to an "on" event
我有一个结果列表,我使用 jQuery 添加了一个 悬停 事件,所以标题会变成红色。
它工作得很好。
<li><a class="hoverbox"></a><h1 class="ttl">Result 1</h1></li>
<li><a class="hoverbox"></a><h1 class="ttl">Result 2</h1></li>
<li><a class="hoverbox"></a><h1 class="ttl">Result 3</h1></li>
$(document).on({
mouseenter: function () {
$('.ttl').css("color","red");
},
mouseleave: function () {
$('.ttl').css("color","inherit");
}
}, ".hoverbox");
问题是每当我将鼠标悬停在单个元素上时,所有元素都会变成红色。我只希望特定元素变红。
我尝试使用 jQuery 的 each(),但无法理解如何使用给定的语法来使用它。
您可以使用以下方法获得预期结果。
$('.ttl').on('mouseenter',function() {
$(this).css("color","red");
}).on('mouseleave',function() {
$(this).css("color","inherit");
});
您不能使用 $('.ttl')
因为它指的是您需要使用的所有 .ttl
元素 $(e.currentTarget).parent().find('.ttl')
到 select 当前 .ttl
元素:
$(document).on({
mouseenter: function (e) {
$(e.currentTarget).parent().find('.ttl').css("color","red");
},
mouseleave: function (e) {
$(e.currentTarget).parent().find('.ttl').css("color","inherit");
}
}, ".hoverbox");
然而,正如其他人所说,使用 CSS 优于使用 JS。
您需要使用 JavaScript 执行此操作吗?使用 CSS.
可以很容易地实现这一点
HTML:
<ul class="list">
<li><a class="hoverbox"></a><h1 class="ttl">Result 1</h1></li>
<li><a class="hoverbox"></a><h1 class="ttl">Result 2</h1></li>
<li><a class="hoverbox"></a><h1 class="ttl">Result 3</h1></li>
</ul>
CSS:
.list > li:hover .ttl {
color: red !important; // if you have to override an already applied theme (like wordpress)
}
如果您想使用普通对象同时附加多个事件处理程序,则必须进行细微的更改。
$('.ttl').on({
mouseenter: function () {
$(this).css("color","red");
},
mouseleave: function () {
$(this).css("color","inherit");
}
});
检查此 jsfiddle 以获得演示
没有JS的解决方案
https://jsfiddle.net/w4j5hsLh/3/
.hoverbox{
position:absolute;
z-index:999;
width:100%;
height:100%;
}
li{width:100px;height:100px;position:relative;}
li:hover > .ttl {
color:red;
}
我有一个结果列表,我使用 jQuery 添加了一个 悬停 事件,所以标题会变成红色。
它工作得很好。
<li><a class="hoverbox"></a><h1 class="ttl">Result 1</h1></li>
<li><a class="hoverbox"></a><h1 class="ttl">Result 2</h1></li>
<li><a class="hoverbox"></a><h1 class="ttl">Result 3</h1></li>
$(document).on({
mouseenter: function () {
$('.ttl').css("color","red");
},
mouseleave: function () {
$('.ttl').css("color","inherit");
}
}, ".hoverbox");
问题是每当我将鼠标悬停在单个元素上时,所有元素都会变成红色。我只希望特定元素变红。
我尝试使用 jQuery 的 each(),但无法理解如何使用给定的语法来使用它。
您可以使用以下方法获得预期结果。
$('.ttl').on('mouseenter',function() {
$(this).css("color","red");
}).on('mouseleave',function() {
$(this).css("color","inherit");
});
您不能使用 $('.ttl')
因为它指的是您需要使用的所有 .ttl
元素 $(e.currentTarget).parent().find('.ttl')
到 select 当前 .ttl
元素:
$(document).on({
mouseenter: function (e) {
$(e.currentTarget).parent().find('.ttl').css("color","red");
},
mouseleave: function (e) {
$(e.currentTarget).parent().find('.ttl').css("color","inherit");
}
}, ".hoverbox");
然而,正如其他人所说,使用 CSS 优于使用 JS。
您需要使用 JavaScript 执行此操作吗?使用 CSS.
可以很容易地实现这一点HTML:
<ul class="list">
<li><a class="hoverbox"></a><h1 class="ttl">Result 1</h1></li>
<li><a class="hoverbox"></a><h1 class="ttl">Result 2</h1></li>
<li><a class="hoverbox"></a><h1 class="ttl">Result 3</h1></li>
</ul>
CSS:
.list > li:hover .ttl {
color: red !important; // if you have to override an already applied theme (like wordpress)
}
如果您想使用普通对象同时附加多个事件处理程序,则必须进行细微的更改。
$('.ttl').on({
mouseenter: function () {
$(this).css("color","red");
},
mouseleave: function () {
$(this).css("color","inherit");
}
});
检查此 jsfiddle 以获得演示
没有JS的解决方案
https://jsfiddle.net/w4j5hsLh/3/
.hoverbox{
position:absolute;
z-index:999;
width:100%;
height:100%;
}
li{width:100px;height:100px;position:relative;}
li:hover > .ttl {
color:red;
}