2015-10-15 137 views
1

我有一個問題,需要一個奇怪的解決方法。基本上,我在平板電腦上有一個菜單,需要忽略用戶第一次點擊/選擇鏈接,但是一旦第二次選擇,它就會執行鏈接。jQuery - 防止第一次點擊激活

所以說,我們這裏有一個鏈接,去谷歌: Google.com

我怎樣才能阻止,直到它的點擊一次加載鏈接窗口?這樣,如果有多個子菜單可以顯示子菜單,則可以單擊多個菜單項。

我環顧四周,所有我發現是event.stopImmediatePropagation();

但這完全忽略所有點擊事件,這不是我所需要的。

可以做到這一點嗎?應該有辦法檢測點擊次數,當然?

回答

1

您可以使用類似這樣的東西:

var clickBtn = false; 

$('#link').click(function(e){ 
    if(clickBtn == false){ 
     e.preventDefault(); 
    } 
    clickBtn = true; 
}); 

Fiddle

+0

謝謝,我刪除了警報();因爲這對我來說不是必需的,但除此之外,我得到它的工作,所以謝謝你! :) –

+0

很高興幫助:) – wayzz

0

你可以嘗試添加一個變量來檢測是否被點擊尚未:

var hasBeenClicked = false; 

然後單擊時:

if (hasBeenClicked) { 
    // logic to follow the link 
} else { 
    hasBeenClicked = true; 
} 
0

我會製作一個全局可訪問的計數器變量,然後圍繞您想要在該點擊函數內運行的if語句做出if語句,以便它只在需要時執行。例如:

var counter = 0; 

example.addEventListener("click", function() { 
    if (counter > 0) { 
     //do action 
    } 
    counter++; 
} 

希望幫助!

1

您可以檢查一類說,.clicked,若發現按照鏈接,如果沒有找到 - 那一定是第一次點擊 - 不按照鏈接,添加類clicked

$('.a').on('click', function(e) { 
    if(!$(this).is('.clicked')) { 
     e.preventDefault(); 
     $(this).addClass('clicked'); 
    } 
}); 

DEMO

0

達到要求的一種方法是使用數據屬性。

當用戶點擊鏈接時,檢查該鏈接元素上是否存在數據屬性(比如說'數據點擊一次')。如果沒有,請將此屬性設置爲「true」。如果該屬性存在,請執行顯示菜單的代碼。

$('a#menu').on('click', function(){ 
    var $a = $(this); 
    if($a.attr('data-clicked-once') === 'true'){ 
     //show the menu 
    }else{ 
     $a.attr('data-clicked-once','true'); 
    } 
}); 

注意,當你從.attr屬性()總是返回字符串