我有一个网站,我有多个按钮。按下按钮后,我会填充一个列表,但我的问题是最后按下的按钮一直被按下(有:active
类)。我考虑使用有角度的$timeout
来重置按钮,虽然removeClass
功能没有做到这一点。
我的观点如下:
div(ng-controller='productButtonController')
div(ng-repeat='product in products')
div.col-md-4
button.btn.btn-block.sell-button(id='{{product._id}}' ng-click='sell()'){{product.name}}
和我的控制员:
app.controller('productButtonController', ['$scope', '$timeout', 'productServices', 'flash',
function($scope, $timeout, productServices, flash) {
productServices.getProducts()
.success(function(result) {
$scope.products = result.data
})
.error(showErrorMessage(flash))
$scope.sell = function() {
console.log(this.product)
that = this
$('#' + that.product._id).removeClass('active')
}
}
])
答案 0 :(得分:7)
$window.document.activeElement.blur();
答案 1 :(得分:6)
Justin Poehnelt handy GIST的代码优雅地解决了这个问题。
app.directive('blur', [function () {
return {
restrict: 'A',
link: function (scope, element) {
element.on('click', function () {
element.blur();
});
}
};
}]);
将模糊属性添加到单击后需要模糊的按钮/元素。例如
<button type="button" blur>Click me</button>
答案 2 :(得分:5)
如果您只是想覆盖引导按钮的焦点状态,可以使用:
.btn:focus{
outline: none;
}
然后你的按钮应该如下:
<button class="btn btn-default">My button 1</button>
覆盖按钮状态的样式表在引导样式表后加载也很重要。
修改强>
很抱歉,但上一步只删除了大纲。按钮的背景颜色仍然保持不变。
因为我知道你需要更改按钮的:focus
状态,因此bootstrap不会将任何活动类附加到被点击的元素:
$('#' + that.product._id).blur();
请告诉我这是否适合您。