Используйте onmousedown, чтобы получить идентификатор элемента, на котором вы только что разместили mousedown? - PullRequest
8 голосов
/ 09 августа 2009

Возможно ли это?

Я пытаюсь написать функцию для onmousedown, которая будет возвращать идентификатор элемента, который вы только что щелкнули, для последующего использования при воссоздании этого элемента в другом div.

Ответы [ 4 ]

13 голосов
/ 09 августа 2009

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

document.body.onmousedown = function (e) {
  e = e || window.event;
  var elementId = (e.target || e.srcElement).id;

  // call your re-create function
  recreate(elementId);
  // ...
}

function recreate (id) {
  // you can do the DOM manipulation here.
}

Редактировать: Вы можете назначить события для всех ваших сценариев Draggables следующим образом:

Event.observe(window, 'load', function () {
  Draggables.drags.each(function (item) {
    Event.observe(item.element, 'mousedown', function () {
      alert('mouseDown ' + this.id); // the this variable is the element 
    });                              // which has been "mouse downed"
  });
});

Проверьте пример здесь .

2 голосов
/ 09 августа 2009

CMS в значительной степени имеет правильный ответ, но вам нужно сделать его немного более удобным для браузеров.

document.body.onmousedown = function (e) {
  // Get IE event object
  e = e || window.event;
  // Get target in W3C browsers & IE
  var elementId = e.target ? e.target.id : e.srcElement.id;
  // ...
}
0 голосов
/ 05 июня 2017

Пожалуйста, вставьте этот код в свой JavaScript.

document.getElementById("article").onmouseup(handMu);
0 голосов
/ 09 августа 2009

Если вы хотите скопировать идентификатор div, проще всего использовать cloneNode, например:

<div id="node1">
  <span>ChildNode</span>
  <span>ChildNode</span>
</div>

<div id="container"></div>

<script type="text/javascript">
  var node1 = document.getElementById('node1');
  var node2 = node1.cloneNode(true);

  node2.setAttribute('id', 'node2');

  var container = document.getElementById('container');
  container.appendChild(node2);
</script>
...