Чекбокс мне в якорь.
Доброго дня имеем простейшую конструкцию:
<a href="#"> <input type="checkbox" name=""> test </a>
$("a").on("click", function(event){
$(this).children("input").attr("checked", true)
return false
})
Очень бы хотелось поменять значение у чекбокса кликая на чекбокс. К сожалению структуру HTML поменять нет возможности. |
Цитата:
|
Цитата:
$(this).children("input").prop("checked", true);
|
Цитата:
|
Цитата:
|
Цитата:
Цитата:
1 как бы чек бокс сам при клике будет менять своё значение - это поведение предопределённое 2 return false - вы убиваете поведение предопределённое |
Scrum,
во блин ))) хоть по ссылке хоть по чекбоксу
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(function ()
{
$("a").on("click", function(event){
if(this != event.target) return;
event.preventDefault();
var input = $(this).children("input");
input.prop("checked", !input[0].checked);
})
})
</script>
</head>
<body>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<a href="#">
<input type="checkbox" name=""> test
</a>
</body>
</html>
|
Цитата:
Совершенно ясно понимаю поставленную перед собой задачу. Я хочу что бы при клике именно на чекбокс у меня не было предопределенного действия для элемента А и осуществилось предопределенное действие для чекбокса, но по странным (хотя вроде бы и понятным и логичным) обстоятельствам в event.target попадает элемент input для которого так же отрабатывает отмена предопределенного действия. рони Увы происходит "Скачёк". в firefox, opera, в chrome b ie10 - отрабатывает корректно. Из приятного понравилась конструкция с проверкой ) |
Scrum,
как отменить всплытие для в firefox пока загадка ))) |
Scrum,
Вариант ... для firefox и прочих ... :write:
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(function () {
$("a").on("click", function (event) {
var input = $("input:checkbox", this),
checked = !input.prop("checked");
$(event.target).is(":checkbox") && (checked = !checked);
window.setTimeout(function () {
input.prop("checked", checked)
}, 0);
return false
})
});
</script>
</head>
<body>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<a href="#">
<input type="checkbox" name=""> test
</a>
</body>
</html>
|
рони,
Громадное спасибо, отличное решение, немного напрягает таймоут, но это терпимо. |
Цитата:
Нельзя вкладывать "активный" элемент в другой "активный" элемент. Советую кстати тщательней тестировать такую херню в разных браузерах. |
| Часовой пояс GMT +3, время: 16:16. |