Используйте onmousedown для получения идентификатора элемента Вы просто mousedowned на?

"Другая" опция могла состоять в том, чтобы позволить методу находки взять дополнительный параметр с объектом по умолчанию, который был бы возвращен, если разыскиваемый объект не может быть найден.

Иначе я просто возвратил бы пустой указатель, если это действительно не исключительный случай, когда объект не найден.

8
задан zombat 9 August 2009 в 04:03
поделиться

3 ответа

​​

Вы можете использовать делегирование событий , чтобы в основном подключить только один обработчик событий ко всему документу и получить элемент, для которого событие было первоначально отправлено, используя событие .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.
}

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

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"
  });
});

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

14
ответ дан 5 December 2019 в 10:43
поделиться

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;
  // ...
}
2
ответ дан 5 December 2019 в 10:43
поделиться

Если вы хотите воспроизвести идентификатор 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>
0
ответ дан 5 December 2019 в 10:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: