Обработка событий кликов в слоях z-index'd - PullRequest
7 голосов
/ 22 июня 2009

У меня есть 2 слоя z-index в приложении карты, которое я создаю. У меня есть проблема, когда я нажимаю на слои для увеличения. Обработчик щелчка находится на нижележащем слое z-index, и я не хочу, чтобы он срабатывал при нажатии на элемент управления в вышележащем слое.

Проблема, с которой я столкнулся, заключается в том, что событие вызывается независимо от того, что, кроме свойства originalTarget события, не является изображением в нижележащем слое, когда что-то на верхнем слое щелкается. Есть ли способ изменить это?

Ответы [ 4 ]

5 голосов
/ 22 июня 2009

Это называется пузырьковым событием, и вы можете управлять им с помощью метода event.stopPropagation() (event.cancelBubble() в IE). Вы также можете управлять им, возвращая true / false из обработчиков, вызываемых по любым атрибутам элементов. Это сложная тема, поэтому я предлагаю вам провести исследование .

Информация: cancelBubble , stopPropagation

1 голос
/ 22 июня 2009

Хотя это не решает проблему напрямую, это может быть жизнеспособным обходным решением, пока не появится более подходящее решение.

Напишите одну функцию, которая будет вызвана onClick, и дайте ей достаточно ума, чтобы знать, кто ее вызвал. Затем функция выполняет соответствующее действие в зависимости от того, кто ее щелкнул. Вы можете послать это почти все, что будет уникальным, а затем использовать переключатель.

упрощенный пример:

<html>
<body>

<script type="text/javascript">
function myClickHandle(anID)
{
switch(anID){
case 'bottom': 
      alert("I am on the bottom");
      break;
case 'top':
      alert("I am on the top");
      break;
}
}
</script>

<html>
<div style="z-index:10"><input type=button value='top' onclick="myClickHandle(this.value)"/></div>
<div style="z-index:11"><input type=button value='bottom' onclick="myClickHandle(this.value)"/></div>
</body>
</html>
0 голосов
/ 07 апреля 2010

приоритет элемента, который имеет большой z-индекс

http://api.jquery.com/event.stopPropagation/

0 голосов
/ 23 июня 2009

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

...