Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果html元素具有类,则避免链接访问_Javascript_Jquery_Html_Magnific Popup - Fatal编程技术网

Javascript 如果html元素具有类,则避免链接访问

Javascript 如果html元素具有类,则避免链接访问,javascript,jquery,html,magnific-popup,Javascript,Jquery,Html,Magnific Popup,我有一个HTML元素作为文章的购买链接。当这篇文章是soldout时,这个链接得到class=售罄。当有人单击该链接时,它将打开一个jQuery maginific弹出窗口,其中包含签出表单。但是当我想要的课程卖完后,这个链接就不能点击了。为了实现这一联系,我遇到了一些问题 我的HTML: 发生了什么: 事实上,它避免了ajax弹出窗口,但在本例中,它仍然遵循HTML元素的链接,但它不应该做任何事情。怎么了?您还需要添加e.stopPropagation以防止点击触发 您只是在侦听mousedo

我有一个HTML元素作为文章的购买链接。当这篇文章是soldout时,这个链接得到class=售罄。当有人单击该链接时,它将打开一个jQuery maginific弹出窗口,其中包含签出表单。但是当我想要的课程卖完后,这个链接就不能点击了。为了实现这一联系,我遇到了一些问题

我的HTML:

发生了什么: 事实上,它避免了ajax弹出窗口,但在本例中,它仍然遵循HTML元素的链接,但它不应该做任何事情。怎么了?

您还需要添加e.stopPropagation以防止点击触发

您只是在侦听mousedown事件,但是元素上也会触发一个click事件,默认情况下,标签的click事件将跟随href属性

我很好奇为什么要绑定mousedown事件而不是click事件?如果更改为click事件,我相信e.preventDefault将直接处理此问题。

您还需要添加e.stopPropagation以防止单击触发

您只是在侦听mousedown事件,但是元素上也会触发一个click事件,默认情况下,标签的click事件将跟随href属性


我很好奇为什么要绑定mousedown事件而不是click事件?如果更改为click事件,我相信e.preventDefault将直接处理此问题。

在preventDefault之后添加StopperProgation对我不起作用,但将mousedown更改为click对我起作用。谢谢你的解释。我会记住这一点:。我可以在8分钟内接受这个答案-你已经很快了:PstopPropagation会起作用的。我认为您拼写Propogation的方式有误,但是是的,使用click更好。在preventDefault之后添加StopperPogation对我不起作用,但将mousedown更改为click对我起作用。谢谢你的解释。我会记住这一点:。我可以在8分钟内接受这个答案-你已经很快了:PstopPropagation会起作用的。我认为你拼写Propogation的方式有误,但是是的,使用click更好。
<a href="checkout.php" class="btn-1 ajax-popup sold-out">Purchase</a>
$('.ajax-popup').mousedown(function(e){
    e.preventDefault();
    if($(this).hasClass("sold-out")) {
        return false;
    }
    var region = $(this).data('region');
    var quantity = $(this).data('quantity');
    if(typeof quantity == 'undefined') quantity = $(this).parent().find('select').val();
    var packageid = $(this).data('packageid');

    $(this).magnificPopup({
      type: 'ajax',
      ajax: {
          settings: {
              data : {
                  region : region,
                  quantity : quantity,
                  packageid : packageid,
              }
          }
      },
      closeOnContentClick: false,
      closeOnBgClick: false
   });

});