Как определить, был ли ребенок нажат в Jquery - PullRequest
16 голосов
/ 29 февраля 2012

Есть ли в jQuery способы определить, по какому дочернему элементу щелкнули, если событие onclick было привязано к родительскому элементу?

Например:

  $('#daddy').click(function () {
    // if($("#son").isClicked()){return true;}
    //return false;
  });

и разметка выглядит так:

<div id="daddy">
  <span id="son"></span>
  <span id="daughter"></span>
</div>

Ответы [ 6 ]

23 голосов
/ 29 февраля 2012

Обработчик события, который вы передаете 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>
4 голосов
/ 29 февраля 2012

Вы можете использовать event.target , чтобы определить, на что нажали:

  $('#daddy').click(function (e) {
      alert(e.target.id); // The id of the clicked element
  });

Вот простой пример .

2 голосов
/ 29 февраля 2012

Это должна быть как минимум другая точка зрения:

$('#parent').on("click", function(evt) {
        evt.stopPropagation();
        if($.inArray(evt.currentTarget, $(this).children())){
            console.log(evt.currentTarget);
        }
});
1 голос
/ 29 февраля 2012

отметьте это демо из

$(function() {
    $('#parent').delegate('a', 'click', function(evt) {
        debugger;
        evt.stopPropagation();
        alert($(evt.currentTarget).attr('id'));
    });
});​
0 голосов
/ 08 сентября 2017

используйте event.target, чтобы получить действительно выбранный узел:

$('#daddy span').on('click',function(event){
    if(event.target.nodeName=='BUTTON'){//Was clicked a button
        ....
    }
    if(event.target.id=='id'){//Was clicked #id
        ....
    }
    ...
});
0 голосов
/ 29 февраля 2012

Попробуйте это для альтернативы

$('#daddy span').click(function () {
    var clicked = $(this).attr('id');
    if(clicked == "son"){
        return true;
    }
    return false;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...