javascript - 如何防止标签内的链接触发复选框?

标签 javascript jquery html css

我有这个标签:

<label><input type="checkbox"> I agree to the <a href="terms">terms</a> and would like to continue</label>

但是,标签内的链接会打开一个 foundation 5 reveal modal。这工作正常,但单击链接也会选中复选框。

如何防止在单击链接时选中复选框?

最佳答案

您应该只需要将事件绑定(bind)到调用 event.stopPropagation()event.preventDefault() 的链接

标签中所有链接的 JQuery:

$(document).on("tap click", 'label a', function( event, data ){
    event.stopPropagation();
    event.preventDefault();
    window.open($(this).attr('href'), $(this).attr('target'));
    return false;
});

纯javascript(你需要在你想关注的链接上设置一个id)

var termLink = document.getElementById('termLink');
var termClickHandler = function(event) {
    event.stopPropagation();    
    event.preventDefault();
    window.open(termLink.href, termLink.target);
    return false;
};
termLink.addEventListener('click', termClickHandler);
termLink.addEventListener('touchstart', termClickHandler);

这些期望将链接目标设置为 _self_blank 以分别在同一窗口或新窗口中打开。

关于javascript - 如何防止标签内的链接触发复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24755802/

相关文章:

jquery - Omniauth Facebook ajax

javascript - 我正在尝试在 javascript 中验证没有警报功能的文本字段,但它不起作用

javascript - 在不同的 url 之间进行无缝转换

javascript - css touch-action none on body, pinch-zoom on element

javascript - 将时隙从 API 转换为选定的时区

jquery - 为什么 jQuery.extend 定义为 jQuery 函数属性,而 jQuery.fn.extend 定义为 jQuery 原型(prototype)对象属性

javascript - 如何延迟10秒的功能

javascript - 如何使用 css 创建中间有小中断的下划线?

javascript - 将 HTML 元素放置在 Cesium 实体的位置上

javascript - setTimeout() 在我的简单计时器脚本中立即起作用