jQuery悬停动画只在其他类似元素中的一个元素上
jQuery hover animation on only one element out of similar others
我是Js和jQuery的新手,当我将鼠标悬停在另一个div上时,我成功地在div上设置了宽度更改动画。但是,当我放置3组类似的div时,悬停在其中一组上,就会触发对所有其他div的操作。我试着放一些"this"answers"next()",但它完全停止了工作。你能启发我一下吗。谢谢
这是代码。
https://jsfiddle.net/HiD3f/LmbaL1qo/2/
<html>
<div class="mapHideBtn collapsed"></div>
<div class="searchBlock hidden"></div>
<div class="mapHideBtn collapsed"></div>
<div class="searchBlock hidden"></div>
<div class="mapHideBtn collapsed"></div>
<div class="searchBlock hidden"></div>
</html>
<style>
.searchBlock {
display : inline-block;
height: 50px;
background : red;
}
.hidden {
width: 0;
transition : width 0.4s ease-in
}
.shown {
width: 300px;
transition : width 0.4s ease-in
}
.mapHideBtn {
display : inline-block;
width: 50px;
height: 50px;
background : green;
}
</style>
<script>
$('.mapHideBtn').hover(function(){
if ($(this).hasClass("collapsed")) {
$('.searchBlock').removeClass("hidden").addClass("shown");
$('.mapHideBtn').removeClass("collapsed").addClass("expanded");
}
else {
$('.searchBlock').removeClass("shown").addClass("hidden");
$('.mapHideBtn').removeClass("expanded").addClass("collapsed");
};
});
您可以使用$(this).next()
和toggleClass()
DEMO
$('.mapHideBtn').hover(function(){
$(this).next().toggleClass('shown');
});
更新:如果你想让红条在悬停时保持打开,你可以使用这种纯CSS方法DEMO或将.searchBlock
放在.mapHideBtn
DEMO
您需要将jQuery选择器更改为$(this)
和$(this).next()
。
您正在经历的是一种类型的循环,它可以找到您标记的所有选择器,并在它们上运行规则。
给你一把固定的小提琴:https://jsfiddle.net/LmbaL1qo/5/
这是代码:
$('.mapHideBtn').hover(function() {
if ($(this).hasClass("collapsed")) {
$(this).next().removeClass("hidden").addClass("shown");
$(this).removeClass("collapsed").addClass("expanded");
} else {
$(this).next.removeClass("shown").addClass("hidden");
$(this).removeClass("expanded").addClass("collapsed");
};
});
解决方案很简单:
<script>
$('.mapHideBtn').hover(function(){
if ($(this).hasClass("collapsed")) {
$(this).next().removeClass("hidden").addClass("shown");
$('.mapHideBtn').removeClass("collapsed").addClass("expanded");
}
else {
$('.searchBlock').removeClass("shown").addClass("hidden");
$('.mapHideBtn').removeClass("expanded").addClass("collapsed");
}
});
</script>
相关文章:
- 使用clickToggle并在单击另一个元素时关闭元素
- 表追加而不附加最后一个元素
- 滚动到容器中的下一个元素-几乎到了
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- 按我自己的类克隆另一个元素的内容和顺序
- Javascript获取上一个元素的内容
- 如何通过HTML+CSS中的另一个元素Selector更改元素的属性值
- 在数组中的一个元素上设置多个值
- 指令的模板必须只有一个根元素:With restrict E&替换true
- HTML JavaScript,我如何能够通过给每个元素一个不同的Id来使用JavaScript使这个函数工作
- 如何创建一个独立的 DOM 元素?一个不从父母那里继承 css 等
- 如何给图像元素一个“;选择“;使用Raphael.js查看
- 如何显示隐藏的
- 元素一个接一个或全部同时
- 使用"span"创建一个自定义的基于web的文本编辑器;元素——一个坏主意
- 引导旋转木马传递元素一个接一个
- 给所有元素一个匹配数组内容的ID
- 我如何得到Json数组元素一个接一个的jquery上不同的id'
- 一次淡入附加元素一个
- 如何使用AngularJS检索外部网站的内容(一个元素一个元素)