我正在尝试data-toggle="buttons-radio"
在我的网站中使用 Twitter Bootstrap 按钮组。引导标记如下。
<div class="btn-group program-status" data-toggle="buttons-radio">
<button class="btn">All</button>
<button class="btn">Active</button>
<button class="btn">Planning</button>
<button class="btn">End of Life</button>
<button class="btn">Cancelled</button>
</div>
我需要根据按下的按钮重定向到带有查询的同一页面。我尝试使用以下 jQuery 代码来实现这一点。
<script>
var sParamStr = '';
function addToParamStr(str) {
sParamStr += str;
}
function redirectToUpdatedLocation() {
$('.program-status > .btn.active').each(function () {
addToParamStr( '?status=' + $(this).text());
});
console.log(sParamStr);
window.location.href = "program" + sParamStr;
}
$document.ready(function () {
$('.program-status > .btn').on('click', function (e) {
redirectToUpdatedLocation();
});
});
</script>
但是浏览器总是重定向到 {site}/program 没有查询字符串。通过注释掉window.location.href = "program" + sParamStr;
一行,我设法观察到第二次点击,并sParamStr
正确附加。
看来,我的代码之前尝试读取按下按钮的文本,.button('toggle')
方法表单 bootstrap.js 完成。当我按如下更改功能时,代码按预期工作。
$document.ready(function () {
$( '.program-status > .btn').on('click', function (e) {
$(this).addClass('active');
redirectToUpdatedLocation();
});
});
虽然这种方法现在对我有用,但我想知道实现这一目标的正确方法。即如何在之前的点击绑定完成后执行我的代码?
更新:
我在 Twitter Bootstrap 论坛中找到了这个链接。似乎这是一个已知问题。 https://github.com/twitter/bootstrap/issues/2380