【发布时间】:2011-12-27 00:37:51
【问题描述】:
考虑以下sn-p:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
</head>
<body>
<form>
<a id="a" href="http://google.com">Goooooogle</a>
</form>
<script>
$(function() {
var checkbox = $('<input type="checkbox"></input>');
checkbox.prependTo($('#a'));
checkbox.click(function(e) {
e.stopPropagation();
// do something useful
});
});
</script>
</body>
</html>
我想在<a> 中获得一个复选框,并获得以下点击行为:
- 像往常一样正常切换复选标记
- 做一些有用的事情,比如 AJAX 请求
- 留在此页面,即不会被重定向到
a href
如果我单击a 中的任意位置,我也不想覆盖默认行为,但不是复选框。 IE。我想允许执行与a click 本身关联的所有事件处理程序。
我认为这应该很容易,但我无法获得所需的行为。要么:
- 如果我输入提供的代码,我会被重定向到 Google。
- 如果我使用
e.preventDefault()或return false;,我不会切换复选标记。此外,在这种情况下,复选框会忽略显式checkbox.attr('checked', 'checked')和所有其他可能设置复选标记的方式。
问题在哪里?
UPD: 这在 Chrome 中按预期工作,例如我没有在点击时重定向,但在 Firefox 中失败。有跨浏览器的方式吗?
【问题讨论】:
-
为什么要将复选框放在锚标签内?期望的结果是什么?
-
这是我必须处理的过于简化的版本。我不能在html中做到这一点。无论如何,它会改变什么吗?
-
可能还有另一种方法可以实现您想要做的事情。但我们不知道你想做什么
-
@nailxx 看起来你已经得到了答案
标签: javascript jquery checkbox event-bubbling