通过URL触发“onClick”,但不访问该URL

时间:2016-04-20 16:30:37

标签: javascript jquery wordpress redirect

尝试在访问指定网址时启动.register-btn a导航条的点击事件,但不允许浏览器访问该网址。

因此, home.com/memberlogin 会保留在 home.com 上(如果我必须,则会重定向到home.com),以及继续激活点击按钮。

到目前为止,这是我所拥有的,它重定向无处不在,因为它最终花费的时间比点击事件更长,而且加载404,然后等待,然后重定向,然后等待,然后等待,这也非常麻烦点击事件。

如果可能的话,我想要干净利落的东西。

jQuery(document).ready(function() {
    jQuery(function() {
        switch (window.location.pathname) {
            case '/memberlogin':
            jQuery('.register-btn a').trigger( "click" );
    return False;
        }
      });
});

可能很可怕地解释了所有道歉 - .register-btn a已经存在,所以我无法创建这个元素,我只是希望在访问URL /链接时触发它的点击。打开建议,但我假设/ memberlogin就足够了,然后链接就会触发。我不想“访问”该URL,但仅将其用于触发器。

打开一个更简单的方式,告诉我,如果我要求的东西不起作用,只是觉得必须有办法。

3 个答案:

答案 0 :(得分:2)

您是否尝试过e.preventDefault()?

<a href="stackoverflow.com" class="dontGo"> click </a>

和jQuery:

$('.dontGo').on('click',function(e){
    e.preventDefault();
    //do stuff
})

小提琴:https://jsfiddle.net/b9x7x4m6/

docs:http://www.w3schools.com/jquery/event_preventdefault.asp

答案 1 :(得分:0)

只需创建一个功能

function theAction(){
      return false;
 } 

然后您的链接将

<a href="/memberlogin" onClick="theAction()">page name </a>

答案 2 :(得分:0)

完整的JavaScript解决方案(根据要求更新了代码段):

window.onload = function () {
  [].slice.call(document.querySelectorAll('.dontGo')).forEach(function(element, index) {
    element.addEventListener('click', function(e) {
      e.preventDefault();
      alert(e.target.textContent);
    }, false);
  });

  
  // in order to target a specific URL you may write code like in reported,
  // assuming the result is only one element,
  // otherwise you need to use the previous [].slice.call(documen.....:
  document.querySelectorAll('.dontGo[href="linkedin.com"]')[0].addEventListener('click', function(e) {
    e.preventDefault();
    alert('Linkedin anchor: ' +  e.target.textContent);
  }, false);
};
<a href="stackoverflow.com" class="dontGo"> stackoverflow </a><br/>
<a href="google.com" class="dontGo"> google </a><br/>
<a href="linkedin.com" class="dontGo"> linkedin </a><br/>
<a href="twitter.com" class="dontGo"> twitter </a><br/>

querySelector允许您以多种不同方式选择元素: 如果您需要选择具有特定href值的锚点,您可以写:

document.querySelectorAll('.dontGo[href="linkedin.com"]')

请记住,querySelectorAll的结果始终是NodeList数组。您可以测试此类数组的长度,以便仅获取第二个元素(如果存在),例如:

 var nodEles = document.querySelectorAll('.dontGo[href="linkedin.com"]');
    if (nodEles.length > 1) {
        nodEles[1]......
 }

或者您可以使用以下格式:

[].slice.call(...).forEach(....

将NodeList转换为普通数组,然后为每个元素应用事件侦听器。

是的,您可以在anchor标记的href属性前加上哈希(#),以避免页面重定向。但是,在这种情况下,哈希标记用于跳转到另一个页面部分,这将改变您的网址。