在按钮组中切换 class
Toggling class in group of buttons
我有一组按钮的以下标记:
<div class="btn-group pull-right">
<button type="button" class="btn btn-default" id="today">Today</button>
<button type="button" class="btn btn-default" id="this_week">This Week</button>
<button type="button" class="btn btn-default" id="this_month">This Month</button>
<button type="button" class="btn btn-default" id="custom">Custom</button>
</div>
我正在尝试使用 jQuery 将按钮上的 class btn-default
替换为 class btn-primary
,以便在单击时,单击的按钮将具有以下 class="btn btn-primary"
,组中具有 class btn-primary
的任何其他按钮将切换回 btn-default
。
对于我在下面提供的内容,是否有更优雅的解决方案?我是否必须为每个按钮编写一个函数?此外,我冒着将 btn btn-default
添加到已经具有 class 的按钮的风险。非常感谢任何帮助。
$("#today").click(function () {
$(this).parent().find("btn btn-primary").removeClass("btn btn-primary");
$(this).parent().addClass("btn btn-default");
$(this).addClass("btn btn-primary");
});
$('.btn-group').on('click', '.btn', function() {
$(this).addClass('btn-primary').siblings().removeClass('btn-primary').addClass('btn-default');
});
.btn-default {
color: red;
}
.btn-primary {
color: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<div class="btn-group pull-right">
<button type="button" class="btn btn-default" id="today">Today</button>
<button type="button" class="btn btn-default" id="this_week">This Week</button>
<button type="button" class="btn btn-default" id="this_month">This Month</button>
<button type="button" class="btn btn-default" id="custom">Custom</button>
</div>
$(this)
:是被点击的按钮
addClass('btn-primary')
: 添加指定的class到被点击的按钮
.siblings('.btn')
: 将获得具有 btn
class of this
元素 的兄弟姐妹(同一级别的节点)
.removeClass('btn-primary').addClass('btn-default')
:相应地更新 classes siblings
请注意,您不必将 class btn-default
替换为 btn-primary
,您只需应用 btn-primary
class 即可,其样式将取代btn-default
,因此您不必执行其他操作。
$('.btn-group .btn').on('click', function() { // On the click event for each button
$(this) // get the button being clicked
.addClass('btn-primary') // add the `btn-primary` class
.siblings('.btn-primary') // get all sibling buttons which may already be selected
.removeClass('btn-primary'); // remove the selected class
});
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="btn-group pull-right">
<button type="button" class="btn btn-default" id="today">Today</button>
<button type="button" class="btn btn-default" id="this_week">This Week</button>
<button type="button" class="btn btn-default" id="this_month">This Month</button>
<button type="button" class="btn btn-default" id="custom">Custom</button>
</div>
尝试利用 .toggleClass()
var buttons = $("button");
buttons.on("click", function() {
buttons.toggleClass("btn-default", true).removeClass("btn-primary")
.filter(this).toggleClass("btn-primary btn-default");
})
.btn-primary {
background:yellow;
}
.btn-default {
background:green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="btn-group pull-right">
<button type="button" class="btn btn-default" id="today">Today</button>
<button type="button" class="btn btn-default" id="this_week">This Week</button>
<button type="button" class="btn btn-default" id="this_month">This Month</button>
<button type="button" class="btn btn-default" id="custom">Custom</button>
</div>
我有一组按钮的以下标记:
<div class="btn-group pull-right">
<button type="button" class="btn btn-default" id="today">Today</button>
<button type="button" class="btn btn-default" id="this_week">This Week</button>
<button type="button" class="btn btn-default" id="this_month">This Month</button>
<button type="button" class="btn btn-default" id="custom">Custom</button>
</div>
我正在尝试使用 jQuery 将按钮上的 class btn-default
替换为 class btn-primary
,以便在单击时,单击的按钮将具有以下 class="btn btn-primary"
,组中具有 class btn-primary
的任何其他按钮将切换回 btn-default
。
对于我在下面提供的内容,是否有更优雅的解决方案?我是否必须为每个按钮编写一个函数?此外,我冒着将 btn btn-default
添加到已经具有 class 的按钮的风险。非常感谢任何帮助。
$("#today").click(function () {
$(this).parent().find("btn btn-primary").removeClass("btn btn-primary");
$(this).parent().addClass("btn btn-default");
$(this).addClass("btn btn-primary");
});
$('.btn-group').on('click', '.btn', function() {
$(this).addClass('btn-primary').siblings().removeClass('btn-primary').addClass('btn-default');
});
.btn-default {
color: red;
}
.btn-primary {
color: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<div class="btn-group pull-right">
<button type="button" class="btn btn-default" id="today">Today</button>
<button type="button" class="btn btn-default" id="this_week">This Week</button>
<button type="button" class="btn btn-default" id="this_month">This Month</button>
<button type="button" class="btn btn-default" id="custom">Custom</button>
</div>
$(this)
:是被点击的按钮addClass('btn-primary')
: 添加指定的class到被点击的按钮.siblings('.btn')
: 将获得具有btn
class ofthis
元素 的兄弟姐妹(同一级别的节点)
.removeClass('btn-primary').addClass('btn-default')
:相应地更新 classessiblings
请注意,您不必将 class btn-default
替换为 btn-primary
,您只需应用 btn-primary
class 即可,其样式将取代btn-default
,因此您不必执行其他操作。
$('.btn-group .btn').on('click', function() { // On the click event for each button
$(this) // get the button being clicked
.addClass('btn-primary') // add the `btn-primary` class
.siblings('.btn-primary') // get all sibling buttons which may already be selected
.removeClass('btn-primary'); // remove the selected class
});
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="btn-group pull-right">
<button type="button" class="btn btn-default" id="today">Today</button>
<button type="button" class="btn btn-default" id="this_week">This Week</button>
<button type="button" class="btn btn-default" id="this_month">This Month</button>
<button type="button" class="btn btn-default" id="custom">Custom</button>
</div>
尝试利用 .toggleClass()
var buttons = $("button");
buttons.on("click", function() {
buttons.toggleClass("btn-default", true).removeClass("btn-primary")
.filter(this).toggleClass("btn-primary btn-default");
})
.btn-primary {
background:yellow;
}
.btn-default {
background:green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="btn-group pull-right">
<button type="button" class="btn btn-default" id="today">Today</button>
<button type="button" class="btn btn-default" id="this_week">This Week</button>
<button type="button" class="btn btn-default" id="this_month">This Month</button>
<button type="button" class="btn btn-default" id="custom">Custom</button>
</div>