如何从bootstrap按钮中删除:active

Pio*_*Pio 4 twitter-bootstrap angularjs

我有一个网站,我有多个按钮.按下按钮后,我会填充一个列表,但我的问题是最后按下的按钮一直被按下(有:active类).我想过使用angular's $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}}
Run Code Online (Sandbox Code Playgroud)

和我的控制器:

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')
        }
    }
])
Run Code Online (Sandbox Code Playgroud)

ben*_*mod 7

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

$window.document.activeElement.blur();

请参阅如何清除javascript中的焦点?.

  • 非常酷,比接受的答案要好得多 (2认同)
  • 这比接受的答案更有棱角. (2认同)

dea*_*nde 6

Justin Poehnelt的便捷GIST代码优雅地解决了这个问题.

app.directive('blur', [function () {
    return {
        restrict: 'A',
        link: function (scope, element) {
            element.on('click', function () {
                element.blur();
            });
        }
    };
}]);
Run Code Online (Sandbox Code Playgroud)

将blur属性添加到单击后需要模糊的按钮/元素.例如.

<button type="button" blur>Click me</button>
Run Code Online (Sandbox Code Playgroud)


mir*_*ron 5

如果您只想覆盖引导按钮的焦点状态,则可以使用以下命令:

.btn:focus{
    outline: none;
}
Run Code Online (Sandbox Code Playgroud)

然后你的按钮应该是这样的:

<button class="btn btn-default">My button 1</button>
Run Code Online (Sandbox Code Playgroud)

在引导样式表之后加载覆盖按钮状态的样式表也很重要.

编辑:

抱歉,上一步只删除了大纲.按钮的背景颜色仍然保持不变.

由于我知道您需要更改:focus按钮的状态,因此bootstrap不会将任何活动类附加到单击的元素:

$('#' + that.product._id).blur();
Run Code Online (Sandbox Code Playgroud)

如果这对您有用,请告诉我.