通过JavaScript切换按钮图标
Toggle icon on button via JavaScript
我有一个Bootstrap网页设置显示一个可折叠的表。每个表行都有一个按钮,该按钮有一个glyphicon-chevron-down
图标。当用户单击此按钮时,该图标需要更改为glyphicon chevron-up
。我已经尝试了几种不同的方法,但都无济于事。
当前设置为:
<script >
function toggleChevron(button) {
if (button.find('span').hasClass('glyphicon-chevron-down')) {
button.find('span').className = "glyphicon glyphicon-chevron-up";
}
if (button.find('span').hasClass('glyphicon-chevron-up')) {
button.find('span').className = "glyphicon glyphicon-chevron-down";
}
}
</script>
<button type="button" onclick="toggleChevron(this)" class="btn btn-default">
<span class="glyphicon glyphicon-chevron-down"></span>
</button>
JSFiddle
这行得通:
toggleChevron = function(button) {
$(button).find('span').toggleClass('glyphicon-chevron-down glyphicon-chevron-up');
}
主要问题是你正在传递this
,这不是一个jQuery对象,所以你需要在jQuery函数$(button)
中包装button
您的jsfiddle有一些错误。检查控制台
我是这样做的:
http://jsfiddle.net/V9LSS/5/var span = $('.glyphicon');
$('.btn').click(function(e){
if(span.hasClass('glyphicon-chevron-down'))
span.removeClass('glyphicon-chevron-down').addClass('glyphicon-chevron-up');
else
span.removeClass('glyphicon-chevron-up').addClass('glyphicon-chevron-down');
});
简化一点:http://jsfiddle.net/V9LSS/7/
var span = $('.glyphicon');
$('.btn').click(function(e){
span.toggleClass('glyphicon-chevron-down glyphicon-chevron-up');
});
function toggleChevron(button) {
if ($(button).find('span').hasClass('glyphicon-chevron-down')) {
$(button).find('span').removeClass("glyphicon-chevron-down").addClass("glyphicon-chevron-up");
}else{
$(button).find('span').removeClass("glyphicon-chevron-up").addClass("glyphicon-chevron-down");
}
}
你正在传递dom节点作为一个参数,并试图在它上使用jquery函数,你需要在onclick($(this)而不是this)中传递一个jquery元素
试试这个:
$('button').click(function(e) {
var $elm = $(this).find('span'),
cDown = 'glyphicon-chevron-down',
cUp = 'glyphicon-chevron-up';
if ($elm.hasClass(cDown)) {
$elm.removeClass(cDown).addClass(cUp);
}
else {
$elm.removeClass(cUp).addClass(cDown);
}
});
http://jsfiddle.net/V9LSS/3/或者如果你有足够的勇气将所有内容内嵌(dave提供的想法):
<button type="button" onclick="$(this).find('span').toggleClass('glyphicon-chevron-down glyphicon-chevron-up')" class="btn btn-default">
<span class="glyphicon glyphicon-chevron-down"></span>
</button>
http://jsfiddle.net/V9LSS/9/相关文章:
- 如何在已经有图标的滚动到顶部按钮中添加文本
- 如何将自定义图标添加到 JqGrid 顶级工具栏按钮
- 如何让登录按钮在用户登录时更改为图标
- 更改 JWPlayer 显示图标(播放按钮)的不透明度
- 添加/单击c#asp.netmvc5后禁用和更改按钮图标
- 页面更改时动态更改标题按钮图标,jQuery mobile 1.4.5
- 更新引导程序中的按钮图标
- 使用 Primefaces 5.1 如何在运行时仅使用 javascript 更改按钮图标样式.(没有 AJAX 调用)
- 自定义添加此按钮图标图形
- 如何在单击时更改按钮图标
- 按钮图标
- jQuery -数据库访问失败后的更新按钮图标
- 通过JavaScript切换按钮图标
- 使用javascript/bootstrap时,在onclick上更改按钮图标
- Jquery克隆和更新按钮图标
- 如何使用jQuery在选择HTML控件之外放置一个删除按钮图标
- 制作一个透明的播放按钮图标,就像airbnb网站上的一样
- 传单侧边栏v2:添加按钮&图标
- 如何用javascript改变一个特定的JQuery移动按钮图标
- 如何用javascript改变JQuery移动按钮图标