如果 html 元素有 class,避免 link 访问
Avoid link visit if html element has class
我有一个 HTML -元素作为文章的购买 link。当这篇文章售罄时,这个 link 得到 class="sold-out"。当有人点击 link 时,它会打开一个 jQuery 神奇的弹出窗口,其中包含结帐表单。但是当它有我想要的 class "sold-out" 时,这个 link 是不可点击的。要实现这一点 link-遵循预防我有问题。
我的HTML:
<a href="checkout.php" class="btn-1 ajax-popup sold-out">Purchase</a>
我的 JS:
$('.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
});
});
发生了什么:
事实上它避免了 ajax-popup 但在这种情况下它仍然跟随 HTML- 元素的 link 但它不应该做任何事情。怎么了?
您还需要添加 e.stopPropagation()
以防止点击触发。
您只是在监听 mousedown
事件,但也会在元素上触发 click
事件,默认情况下 click
事件会触发 <a>
标签将遵循 href
属性。
我很好奇你为什么要绑定到 mousedown
事件而不是 click
事件?如果您更改为 click
事件,我相信 e.preventDefault()
会直接处理此事件。
我有一个 HTML -元素作为文章的购买 link。当这篇文章售罄时,这个 link 得到 class="sold-out"。当有人点击 link 时,它会打开一个 jQuery 神奇的弹出窗口,其中包含结帐表单。但是当它有我想要的 class "sold-out" 时,这个 link 是不可点击的。要实现这一点 link-遵循预防我有问题。
我的HTML:
<a href="checkout.php" class="btn-1 ajax-popup sold-out">Purchase</a>
我的 JS:
$('.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
});
});
发生了什么: 事实上它避免了 ajax-popup 但在这种情况下它仍然跟随 HTML- 元素的 link 但它不应该做任何事情。怎么了?
您还需要添加 e.stopPropagation()
以防止点击触发。
您只是在监听 mousedown
事件,但也会在元素上触发 click
事件,默认情况下 click
事件会触发 <a>
标签将遵循 href
属性。
我很好奇你为什么要绑定到 mousedown
事件而不是 click
事件?如果您更改为 click
事件,我相信 e.preventDefault()
会直接处理此事件。