jquery - 选择新元素时jQuery隐藏元素
问题描述
我有一系列图标,点击后会显示一个小箭头和一个产品列表。我可以显示箭头并让列表向下滑动,但我想做的是在单击另一个图标时隐藏当前可见的列表和箭头。
任何人都可以帮助或指出我正确的方向吗?
HTML:
<div class="container">
<ul class="stockist-block">
<li class="stockist-icon" id="STORE1">
<img src="icon1.jpg" class="attachment-post-thumbnail" />
<div class="stockist-arrow">
<img src="blue-arrow.jpg"/>
</div>
</li>
<li class="stockist-icon" id="STOREONSTREET">
<img src="icon2.jpg" class="attachment-post-thumbnail" />
<div class="stockist-arrow">
<img src="blue-arrow.jpg"/>
</div>
</li>
<li class="stockist-icon" id="SHOPONCORNER">
<img src="icon3.jpg" class="attachment-post-thumbnail" />
<div class="stockist-arrow">
<img src="blue-arrow.jpg"/>
</div>
</li>
</ul>
</div>
<div class="container">
<div class="stockist-block-dropdown STORE1">
<div class="col">
<ul class="stockist-block-products clearfix">
<li><a href="link.html" target="_blank">product-title1</a></li>
<li><a href="link.html" target="_blank">product-title2</a></li>
<li><a href="link.html" target="_blank">product-title3</a></li>
<li><a href="link.html" target="_blank">product-title4</a></li>
</ul>
</div>
</div>
<div class="stockist-block-dropdown STOREONSTREET">
<div class="col">
<ul class="stockist-block-products clearfix">
<li><a href="link.html" target="_blank">product-title1</a></li>
<li><a href="link.html" target="_blank">product-title2</a></li>
<li><a href="link.html" target="_blank">product-title3</a></li>
<li><a href="link.html" target="_blank">product-title4</a></li>
</ul>
</div>
</div>
<div class="stockist-block-dropdown SHOPONCORNER">
<div class="col">
<ul class="stockist-block-products clearfix">
<li><a href="link.html" target="_blank">product-title1</a></li>
<li><a href="link.html" target="_blank">product-title2</a></li>
<li><a href="link.html" target="_blank">product-title3</a></li>
<li><a href="link.html" target="_blank">product-title4</a></li>
</ul>
</div>
</div>
</div>
jQuery:
$(document).ready(function() {
$ (".stockist-icon").on('click', function(){
$(this).children('.stockist-arrow').css('visibility','visible');
var elementid = $(this).attr("id");
$("div." + elementid).stop().slideDown(400);
});
});
解决方案
您可以使用 jquery 的类选择器滑动除当前一个以外的所有其他 div。在这里您可以使用class
以 as 开头的属性STORE
,请参见下面的代码
注意:jQuery 具有显示.show()
和.hide()
隐藏 html 元素的功能,因此无需使用.css()
$(document).ready(function() {
$ (".stockist-icon").on('click', function(){
//$(this).children('.stockist-arrow').css('visibility','visible'); -- use .show()
$(this).children('.stockist-arrow').show();
var elementid = $(this).attr("id");
var selector = "div.stockist-block-dropdown." + elementid;
$("div.stockist-block-dropdown").not(selector).stop().slideUp(400); // slidup other divs
$(selector).stop().slideDown(400);
});
});
推荐阅读
- javascript - 无法在 javascript 中初始化 XSLTProcessor 构造函数
- angular - 跨域请求被阻止:同源策略不允许读取远程资源
- php - 带有发件人更改的 Postfix 邮件重定向
- kotlin - 如何从类引用或泛型类型中获取属性引用?
- react-native - React Native - UseState,数字键盘不起作用
- json - 我是否需要定义完全相同的 JSON 结构才能将其与 json.Unmarshal 一起使用?
- html - 无法使用 scrapy 和 xpath/css 找到合适的选择器
- python - Plotly:如何在 plotly express 中使动画帧之间的数据保持一致(即避免数据消失)
- vue.js - Vuepress 运行构建的项目
- php - 查询多次给出相同的结果