2015-11-05 45 views
0

我正在使用Jquery Boostrap tab method。 是否可以防止點擊方法以外的方法中的默認點擊方法?觸發e.preventDefault()外點擊方法

我使用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() 
    }); 
+0

您是否檢查過插件提供的事件,以查看它們是否可以預防? – CBroe

+0

你似乎在將jQuery的'$'與vanilla-js'addEventListener'混合在一起。 – Oriol

+0

我知道:)這是爲了說明的目的;) – stibay

回答

0

你不能阻止默認點擊方法而不捕獲點擊事件。這不適合你嗎?

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

這是不可取的,因爲我對a元素有一個ng-click方法,並將變量從作用域發送到角度方法 – stibay

+0

由於jquery觸發的點擊事件不是由beeing觸發的,所以完全不起作用。 – stibay

+0

恐怕我從未使用過Angular,所以我對它並不熟悉,也許Angular引入了一些不同的東西。但是,這只是將一個事件監聽器添加到元素的方法。它並不關心事件是如何觸發的。無論是用鼠標點擊還是用jquery.trigger('click')或elem.click()都無關緊要。如果該元素的點擊事件被觸發,則該函數將運行並阻止默認操作。 –

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 
} 
0

以前對類似情況的回答似乎正確地處理了preventDefault,但與Gregg Duncan的回答類似。適度的區別在於綁定和解除綁定調用使用選定對象的本地上下文。

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