html body ondblclick получить элемент, на который нажимают

#javascript

#javascript #HTML

Вопрос:

итак, в моем html у меня есть эта часть:

 <body ondblclick="myfunc();">
<div id="id1">dasd</div>
<div id="id2">dasda</div>
</body>
 

и в javascript функция :

 function myfunc() {
    do stuff here...
}
 

я хочу знать внутри myfunc(), на каком элементе тела html был сделан двойной щелчок, потому что я не хочу запускать myfunc() для каждого элемента с двойным щелчком

итак, как я могу определить идентификатор элемента doubleclicked?

Ответ №1:

 <body ondblclick="myfunc(event);">

function myfunc(e) {
    // e.target -> element that was clicked
}
 

Ответ №2:

сделайте свой HTML как

 <body ondblclick="myfunc(event);">
 

и сделать myfunc как:

 function myfunc(event) {
     alert(event.target.id); //here you can get element id that is double clicked
     event.stopPropagation();
}
 

Ответ №3:

 <!doctype html>
<html>
<head>
<meta charset=utf-8>
<title>ondblclick event example</title>
<script> 
    function initElement() {
        var body = document.getElementById("bdy");
        body.ondblclick = showAlert;
    }

    function showAlert(e){
        alert(e.target.id);
    }
    window.onload = initElement;
</script>
</head>
<body id="bdy">
<div id="id1">dasd</div>
<div id="id2">dasda</div>
</body>
</html>
 

Ответ №4:

вы можете определять различные события с использованием on или bind предположим..

 $("#id").on("doubleClick",function () {} );
 

таким образом, он будет знать, что его событие двойного щелчка..

или для javascript вы можете использовать так

 <body ondblclick="myfunc(event);">

function myfunc(event) {
    do something..

}
 

Комментарии:

1. live() Метод больше не поддерживается. on() Вместо этого следует использовать метод.

2. кто сказал, что метод live() не поддерживается? если вы используете jquery, то его лучше всего использовать для будущих событий..

3. Документация jQuery выполнила. Смотрите: jquery.com/upgrade-guide/1.9/#live-removed

4. Нет проблем. Вероятно, вам следует обновить свой ответ, чтобы отразить это.