找到最近的span元素并更改CSS类
Find closest span element and change the CSS Class
我的页面上有以下内容
<h5 class="text-center" id="findStore" style="width:260px">
<a data-toggle="collapse" data-parent="#accordion" href="#@item.ProductId" aria-expanded="true" aria-controls="@item.ProductId" style="color: @item.ProductTextColor;font-size:19px;text-decoration: none;" class="text-center">
<span class="text-center" style="margin-left:14%">FIND A STORE</span>
<span id="chevvy" class="glyphicon glyphicon-chevron-down pull-right"></span>
</a>
</h5>
我希望发生的是,当用户单击"查找商店"时,需要引用Id为V形的span标签,并且我需要将类V形向下更改为V形向上,我正试图使用以下代码
$('h5:not(#nutritionInfo)').click(function () {
if ($(this).find('span').hasClass("glyphicon glyphicon-chevron-down")) {
$(this).find('span').removeClass("glyphicon glyphicon-chevron-down");
$(this).find('span').addClass("glyphicon glyphicon-chevron-up");
} else {
$(this).find('span').removeClass("glyphicon glyphicon-chevron-up");
$(this).find('span').addClass("glyphicon glyphicon-chevron-down");
}
});
但在上面的代码中,它引用了"Find Store",并对其应用了一个V形,这样它就显示了两个。
如何引用Id为V形的另一个跨度标记并更改其上的V形?
您的find('span')
正在查找所有跨度,但您只想触摸其中一个。通过添加更多选择器(如find('span.glyphicon')
)来缩小范围。
顺便说一句,您可以不使用glyphicon
类,而是使用jQuery的toggleClass
特性来切换-up
和-down
,而不使用所有if-else:
$('h5:not(#nutritionInfo)').click(function () {
$(this).find('span.glyphicon').
toggleClass('glyphicon-chevron-down glyphicon-chevron-up');
});
您还可以考虑使用伪类而不是id来确定哪些h5元素会得到这种行为。例如,你可以有一堆这样的
<h5 class="toggle-my-chevron">...</h5>
<h5 class="toggle-my-chevron">...</h5>
全部由其中一个控制
$('.toggle-my-chevron').click(function () {
$(this).find('span.glyphicon').
toggleClass('glyphicon-chevron-down glyphicon-chevron-up');
});
您可以尝试这样做:您可以使用glyphicon
类选择器找到span,然后删除/添加类。
注意-您已经使用了span id=chevvy
,如果您有多个这样的span,请确保您必须为每个DOM元素使用唯一的id。
$('h5:not(#nutritionInfo)').click(function () {
var span = $(this).find('.glyphicon');
if ($(span).hasClass("glyphicon-chevron-down")) {
$(span).removeClass("glyphicon-chevron-down").addClass("glyphicon-chevron-up");
} else {
$(span).addClass("glyphicon-chevron-down").removeClass("glyphicon-chevron-up");
}
});
您需要优化HTML和CSS,因为您的代码段中有多余的HTML-这也将有助于清理JS。这里有一个你可以做什么的快速例子:
HTML
<h5 class="text-center" id="findStore">
<a href="#" class="">FIND A STORE</a>
</h5>
CSS
通过CSS应用图标图像,例如
h5 a {padding-right: 10px; background: transparent url('chevron-down.png') 100% 0 no-repeat}
h5 a.active {background: transparent url('chevron-up.png') 100% 0 no-repeat}
JS/JQUERY
$('h5 a').click(function(){
$(this).toggleClass('active');
return false;
});
相关文章:
- 宽度为100%的CSS元素位于视口之外
- 如何在jquery中从右、从左、从下移动css元素
- 什么'这段用javascript移动css元素的代码错了
- 使用javascript操作css元素,左短划线
- 何时在javascript中使用css元素/类选择器
- 重写HTML CSS元素
- 基于计算定义css元素
- I'我试图用一个按钮随意移动一个CSS元素,我试图使用偏移量,但onlick不起作用
- 影响 JavaScript 中的 CSS 元素
- 存储/检索 CSS 元素
- CSS 元素不会正确对齐
- css 元素和设置间隔错误
- 将 HTML/CSS 元素转换为可重用的 AngularJS 指令
- 相对于另一个 css 元素定位一个元素,而不编辑 html
- 如何对线条进行动画处理以跟踪移动的 CSS 元素
- 如何在 JavaScript 中定位特定的 CSS 元素
- 流星:如何使用空格键来应用不同的CSS元素
- Web 浏览器正在按字母顺序编译 css 元素
- 如何使用 css 元素从 java 添加 url 链接
- 如何通过 css 元素从 jquery 添加 url 链接