触发e.preventDefault()外部单击方法

时间:2015-11-05 19:56:19

标签: javascript jquery angularjs

我正在使用Jquery Boostrap tab method。 是否可以阻止click方法以外的方法中的默认单击方法?

我正在使用AnuglarJS所以我希望这可以很容易地修复/黑客攻击,而无需重新设计AngularJS中的整个选项卡窗格。

我可以使用Jquery

更改标签
$('#tabId a[href="#s' + targetId + '"]').tab('show');

我可以使用

之类的东西阻止点击
$('#tabId a[href="#s' + targetId + '"]').preventDefault();

或者

    $('#tabId a[href="#s' + targetId + '"]').addEventListener("click", function (e) {
        e.preventDefault()
    });

3 个答案:

答案 0 :(得分:1)

ngClick指令会公开$event变量。

ng-click属性中,只需添加$event.preventDefault();

例如,如果你有:

<a href="#" ng-click="doSomething();">Do something</a>

您只需将其更改为:

<a href="#" ng-click="doSomething(); $event.preventDefault();">Do something</a>

OR

您可以将$event变量传递给您的方法。

<a href="#" ng-click="doSomething($event);">Do something</a>

然后在您的方法中调用preventDefault()

$scope.doSomething = function($event) {
    $event.preventDefault();
    //do something
}

答案 1 :(得分:0)

如果不捕获点击事件,则无法阻止默认点击方法。这不适合你吗?

{{1}}

答案 2 :(得分:0)

以前对类似情况的回答似乎正确地解决了preventDefault,但与Gregg Duncan的答案类似。适当的区别在于bind和unbind调用使用所选对象的本地上下文的方式。

https://stackoverflow.com/a/5827040/2266428