【问题标题】:How to stop an anchor from redirecting using JQuery如何使用 JQuery 阻止锚点重定向
【发布时间】:2012-06-29 18:03:03
【问题描述】:

如果用户未登录,如何阻止锚标记重定向到另一个页面?我有一个功能来检查用户是否登录。我想用 JQuery 或 JavaScript 来做。这是我迄今为止尝试过的,但没有结果:

<a href="www.somewhere.com" id="yes">Read More</a>

<script type="text/javascript">
    $(document).ready(function(){
        $('a').click(function(){
            var id = $(this).attr('id');
            if(id == 'yes'){
                //i want to prevent
            }else{
                //redirect
            }
        });
    });
</script>

【问题讨论】:

  • 我可能会建议你使用这种方法的会话
  • 当 onclick 事件被触发时,您可以返回 false。
  • 身份验证需要在您的 PHP 中在服务器端执行,而不是在 JavaScript 中。
  • 你必须返回false
  • 我希望您的代码中有错字,您可能不是要在前几行中使用 $id 而是将 id 作为变量名

标签: javascript jquery html


【解决方案1】:

试试这个

    $("a").on("click",function(e){
         e.preventDefault();
         alert("Clicked");

     });

快乐编码;

【讨论】:

    【解决方案2】:

    请使用http://api.jquery.com/event.preventDefault/

    演示 http://jsfiddle.net/aRBY4/6/

    e.preventDefault() 
    

    引用

    如果调用此方法,则事件的默认动作不会 触发。

    如果我可以建议阅读此内容:.prop() vs .attr()

    希望这会有所帮助,

    示例代码

      $('a').click(function(event){
        event.preventDefault();
        //do whatever
      });
    

    你的情况请试试这个

    $(document).ready(function() {
        $('a').click(function(event) {
            var id = $(this).attr('id');
            if (id == 'yes') {
                event.preventDefault();
                //i want to prevent
            } else {
                //redirect
            }
        });
    });​
    

    【讨论】:

    • 我使用了您提到的相同方法,但如果我提醒锚点 id,它会在点击时返回 undefined。
    • @Ankit 很酷,所以 preventDefault 放在一边,:) 选择器还有另一个问题,它得到了id 你能把你的 html 粘贴到问题中,我可以帮你解决,干杯
    • 我缺少 id,因为我的页面在两种情况下显示相同的代码,非常感谢@Tats,问题已解决。
    • 还有一个问题。由于我已经阻止了锚标签的点击,我也想停止在新标签中打开。
    • 嗨 @Ankit 停止打开标签:嗯,您可以在 preventDefault 之后使用 return false 或使用此 API:api.jquery.com/stop 值得考虑并提出一个单独的问题 :) 只是一个想法您无法弄清楚,但以上细节应该会有所帮助,
    【解决方案3】:

    使用event.preventDefault()。用于阻止事件的默认动作。

    <script type="text/javascript">
    $(document).ready(function(){
          $('a').click(function(){
              var id = $(this).attr('id');
             if(id == 'yes'){
                 event.preventDefault() 
             }else{
                //redirect
             }
         });
    });
    </script>
    

    【讨论】:

      【解决方案4】:

      将您的点击事件处理程序更改为此

      $('a').click(function(e){
          var id = $(this).attr('id');
          if (id == 'yes')
          {
              e.preventDefault();
              e.stopPropagation();
          }
          else
          {
              //redirect
          }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-23
        相关资源
        最近更新 更多