单击链接显示加载,ctrl +单击除外

时间:2016-11-29 08:04:36

标签: javascript jquery html

我想使用tag-helper显示包含加载的<div>。我希望在<a>标记的任何位置显示加载,href='#'除外。 (我没有任何ajax调用,所以我会在点击链接后看到一个新的渲染页面)

  $('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);? (右键单击并在“新选项卡或窗口中打开”没有问题)

1 个答案:

答案 0 :(得分: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>