j查询如何为具有相同类名的多个元素激活一个事件
jQuery how to activate one event for multiple elements with same class name
我有多个具有不同 id 名称的div,如下所示:
<div id="person1">
<img class="imgPerson" src="../images/person1.jpg">
<div class="personBubble" style="display: none;">
<div class="extraInfo">
Sells carrots
</div>
</div>
</div>
<div id="person2">
<img class="imgPerson" src="../images/person2.jpg">
<div class="personBubble" style="display: none;">
<div class="extraInfo">
Sells onions
</div>
</div>
</div>
<div id="person3">
<img class="imgPerson" src="../images/person3.jpg">
<div class="personBubble" style="display: none;">
<div class="extraInfo">
Sells lettuce
</div>
</div>
</div>
如您所见,我有person1, person2, person3
.我还有一个jQuery函数,当imgPerson
悬停时,它为personBubble
类设置display:block
。
$(".imgPerson").hover(
function () {
$(".personBubble").fadeIn(150);
},
function () {
$(".personBubble").fadeOut(150);
});
但是,显然每个personBubble
类都设置为在激活事件时display:block
,因为它们都具有相同的名称。我只希望这种情况发生在相应的personBubble
上,即如果 person1 的imgPerson
处于悬停状态,则只有 person1 的personBubble
应设置为 display: block
。
这一点的最佳方法是什么,而不必为每个人使用唯一的 ID,而不必为每个 ID 编写相同的 jQuery 函数?
您可以引用指向当前上下文的 this
对象,并调用siblings()
方法来搜索具有当前上下文.personBubble
具有相应类名的同级。
$(".imgPerson").hover(
function () {
$(this).siblings(".personBubble").fadeIn(150);
},
function () {
$(this).siblings(".personBubble").fadeOut(150);
}
);
现场演示 @ JSFiddle
可以使用事件源对象$(this)
来获取下一个personBubble
$(".imgPerson").hover(
function () {
$(this).next(".personBubble").fadeIn(150);
},
function () {
$(this).next(".personBubble").fadeOut(150);
});
由于imgPerson
和personBubble
是兄弟姐妹,您所要做的就是使用兄弟姐妹()
我建议你使用 fadeToggle() 它让你的代码更短,更短更好。
$(".imgPerson").hover(function(){
$(this).siblings().fadeToggle(150);
});
相关文章:
- 如何激活下拉菜单:在一个元素上单击768px宽度下方,在另一个元素上将鼠标悬停在768px上方
- 为什么触发点击内容可编辑不会激活元素和设置光标
- 如何在悬停或被激活时更改元素的文本
- 使用动态构建的 jQuery 承诺链按顺序激活特定元素
- 向右浮动的元素不会激活过渡
- Meteor 无法使用 JQuery 激活元素,因为模板渲染了来自 MongoDB 的数据
- 激活 .stop() 后,将元素返回到其起始位置
- 当我单击激活选项卡中的按钮时,如何使其他选项卡单击元素
- j查询如何为具有相同类名的多个元素激活一个事件
- 单击父级中的元素时激活 iFrame 中的单击
- 如何一次只在一个元素上激活.hooper()函数
- 激活选定JAVASCRIPT的特定元素上的函数
- 悬停/鼠标悬停未在元素内部的每次移动中激活
- jquery验证(使用jquery验证插件)-根据单击的按钮激活特定元素的验证规则
- 单击时删除当前元素上的悬停激活
- 如何在特定元素之后激活clearInterval()
- 使用Javascript激活一个元素's:active CSS伪类
- 滚动功能在看到元素时激活
- 如何强制jQuery“监听”?为将来的AngularJS ng-repeat元素激活插件
- 如何使用Javascript触发点击事件来激活元素