如何从bootstrap按钮中删除:active

时间:2014-08-08 14:16:43

标签: angularjs twitter-bootstrap

我有一个网站,我有多个按钮。按下按钮后,我会填充一个列表,但我的问题是最后按下的按钮一直被按下(有: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')
        }
    }
])

3 个答案:

答案 0 :(得分:7)

  1. 将angular $ window服务添加到您的依赖项中 控制器
  2. 在文档的活动元素上调用blur方法,该方法将是 你的按钮。
  3. $window.document.activeElement.blur();

    请参阅How do you clear the focus in javascript?

答案 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();

请告诉我这是否适合您。