首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >stopPropagation()和锚?

stopPropagation()和锚?
EN

Stack Overflow用户
提问于 2013-05-08 17:32:17
回答 4查看 4K关注 0票数 7

我有这个html代码片段:

代码语言:javascript
复制
<a href="picture-big.jpg">
  <span>
    <img src="picture-small.jpg">
    <input type="checkbox" name="delete">
  </san>
</a>

以及JS部分:

代码语言:javascript
复制
$('input').click(function(e) {
  e.stopPropagation();
}); 

在Mozilla上,当我点击复选框时,它会停止传播,但仍然会转到那个锚点(picture-big.jpg)。

如果我使用return false或e.preventDefault() (并用jQuery ($(' input ').prop('checked',true);)选中复选框,则它不会检查输入。

想法是选中复选框而不是跟随链接。在Chrome和IE上,它可以正常工作。但不是在Mozilla上。

有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-05-08 17:56:39

我建议重组你的标记,如果这是不可能的,以下是可行的:

代码语言:javascript
复制
$('input').click(function(e) {
    e.preventDefault();
    var that = this;    
    setTimeout(function() { that.checked = !that.checked; }, 1);    
}); 

Fiddle

票数 6
EN

Stack Overflow用户

发布于 2013-05-08 17:43:04

stopPropagation()只是阻止事件在dom树中冒泡,这意味着父母不会收到通知,但它不会阻止默认操作的发生。您需要将e.preventDefault()添加到您的代码中以阻止其导航。

票数 4
EN

Stack Overflow用户

发布于 2015-01-07 01:17:38

这是已知的Firefox bug。起初,我尝试了相当长一段时间的JavaScript方法来解决它,直到我意识到什么应该是显而易见的方法:

我可以更容易地更改html结构。我在锚点中嵌套了一个复选框。由于锚点是绝对定位在相对div中的,所以它可以立即工作。

代码语言:javascript
复制
<input type="checkbox" name="delete">
<a href="picture-big.jpg">
</a>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16437188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档