Обработка события click на Z-индекса, что слои
У меня есть 2 слоя Z-индекса в приложении Карты, которое я создаю. У меня проблема, когда я нажимаю на слои для увеличения. Обработчик click находится на базовом Z-индексном слое, и я не хочу, чтобы он срабатывал при нажатии элемента управления в вышележащем слое.
проблема в том, что событие возникает независимо от того, что, но свойство originalTarget события не является изображением в базовом слое, когда что-то на верхнем слое щелкнуто. Есть в любом случае менять это?
4 ответов
это называется пузырями событий, и вы можете управлять им с помощью event.stopPropagation()
метод (event.cancelBubble()
в IE). Вы также можете управлять им, возвращая true / false из обработчиков, вызываемых атрибутами onwhatever для элементов. Это сложная тема, поэтому я предлагаю вам сделать некоторые исследования.
информация: cancelBubble, это происходит
хотя это не решает проблему напрямую, это может быть жизнеспособным обходным путем, пока не появится более подходящее решение.
напишите одну функцию, которая будет называться 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>
Я думаю, что лучше всего отсоединить обработчик событий, когда элемент управления перемещается на верхний слой, и когда элемент управления возвращается на нижний слой, вы можете повторно присоединить события.