Рассмотрим следующий фрагмент:
<!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
, но не на флажок. То есть Я хочу разрешить выполнение всех обработчиков событий, связанных с a
само нажатие.
Я думал, что это должно быть довольно легко, но я не могу получить желаемое поведение. Или:
- Я буду перенаправлен в Google, если введу указанный код.
- Если я использую
e.preventDefault()
из return false;
, флажок не помечается. Кроме того, в этом случае флажок игнорирует явный checkbox.attr('checked', 'checked')
и все другие возможные способы установить флажок.
Где подвох?
UPD: Это работает, как и ожидалось в Chrome, например Я не перенаправлен на клик, но не работает в Firefox Есть ли кросс-браузерный способ?