2016-11-29 101 views
0

我想顯示一個<div>包含加載,使用標籤幫手。我想在任何有<a>標籤的地方展示裝載,但href='#'除外。 (我沒有任何Ajax調用,所以點擊鏈接後,我會看到一個新的渲染頁面)點擊鏈接顯示加載,除了Ctrl +點擊

$('a:Not([class="NeedsConfirmation"])').click(function() { 
    var currentURL = window.location.href; 
    var element = $(this); 
    if ((element.attr("href") != "#") && (element.attr("href") != currentURL)) 
     { 
     showLoading(element); 
     } 
    }); 

現在,我想添加額外的例外:目前,如果用戶按下CTRL 然後點擊鏈接,新頁面將顯示,但預覽頁面將顯示加載。

在這種情況下,我怎樣才能放棄撥打showLoading(element);? (我沒有右鍵單擊和'在新標籤中打開'或窗口)

+0

使用事件對象,它將包含密鑰修飾符'$( '一個:未([類= 「NeedsConfirmation」])')。單擊(功能(事件){' –

+0

請問你能解釋一下嗎 – Elnaz

+0

我建議你爲每個'a'標籤添加'event.preventDefault();'單擊以防止元素行爲,然後使用'ajaxStart'和'ajaxStop'事件來顯示和隱藏負責分區 –

回答

1

您可以使用傳入.click的事件對象。它有一個名爲ctrlKey的屬性。檢查它,然後做你想要的東西。

$('a:not([class="NeedsConfirmation"])').click(function (e) { 
 
    e.preventDefault(); 
 
    // Check if ctrl was pressed... 
 
    if(e.ctrlKey) { 
 
    // Ctrl was pressed during click 
 
    alert('ctrl click'); 
 
    // Do something else. 
 
    } 
 
    else { 
 
    // Ctrl was not pressed during click 
 
    alert('not ctrl click'); 
 
    var currentURL = window.location.href; 
 
    var element = $(this); 
 
    if ((element.attr("href") != "#") && (element.attr("href") != currentURL)) 
 
    { 
 
     showLoading(element); 
 
    } 
 
    } 
 
}); 
 

 
showLoading = function(element){ 
 
    element.text('loading...'); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="#">click me!</a> 
 
<a href="www.stackoverflow.com">click me with link!</a>