Как определить, был ли нажат на кнопку в JQuery
Есть ли способ в jQuery указать, какой ребенок был нажат, если событие onclick было привязано к родительскому?
Например:
$('#daddy').click(function () {
// if($("#son").isClicked()){return true;}
//return false;
});
и разметка выглядит следующим образом:
<div id="daddy">
<span id="son"></span>
<span id="daughter"></span>
</div>
Ответы
Ответ 1
Обработчик событий, который вы передаете в click
, получит в качестве первого аргумента объект event
. Здесь будет указан target
события (т.е. Элемент, инициировавший событие).
Вот пример из документации jQuery:
<!DOCTYPE html>
<html>
<head>
<style>
span, strong, p {
padding: 8px; display: block; border: 1px solid #999; }
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div id="log"></div>
<div>
<p>
<strong><span>click</span></strong>
</p>
</div>
<script>
$("body").click(function(event) {
$("#log").html("clicked: " + event.target.nodeName);
});
</script>
</body>
</html>
Ответ 2
Вы можете использовать event.target, чтобы определить, что было нажато:
$('#daddy').click(function (e) {
alert(e.target.id); // The id of the clicked element
});
Здесь простой пример.
Ответ 3
По крайней мере, это должна быть другая перспектива:
$('#parent').on("click", function(evt) {
evt.stopPropagation();
if($.inArray(evt.currentTarget, $(this).children())){
console.log(evt.currentTarget);
}
});
Ответ 4
проверьте demo вне
$(function() {
$('#parent').delegate('a', 'click', function(evt) {
debugger;
evt.stopPropagation();
alert($(evt.currentTarget).attr('id'));
});
});
Ответ 5
Попробуйте это для альтернативного
$('#daddy span').click(function () {
var clicked = $(this).attr('id');
if(clicked == "son"){
return true;
}
return false;
});
Ответ 6
используйте event.target
, чтобы получить действительно нажатый node:
$('#daddy span').on('click',function(event){
if(event.target.nodeName=='BUTTON'){//Was clicked a button
....
}
if(event.target.id=='id'){//Was clicked #id
....
}
...
});