Javascript.RU

 
 
Опции темы
 
Старый 04.09.2010, 20:13
Новичок на форуме
Отправить личное сообщение для avchizh Посмотреть профиль Найти все сообщения от avchizh
 
Регистрация: 30.03.2010
Сообщений: 5

Поверх элемента лежит прозрачный div нужно что бы события прокидывались через него
<body>
		<div style="position:absolute; left:100px; top:100px; width:50px; height:50px; background:red;" onclick='alert(1)'></div>
		<div style="position:absolute; width:500px; height:500px;"></div>
    </body>


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

z-Index менять нельзя

Последний раз редактировалось avchizh, 04.09.2010 в 20:17.
 
Старый 04.09.2010, 20:26
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Можно поверху положить еще один полностью прозрачный див?
 
Старый 04.09.2010, 20:54
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

<style type="text/css">
#div1, #div2 {
	border: 1px solid #DDDDDD;
	margin: 50px auto;
}

#div1 {
	width: 200px;
	height: 100px;
}

#div2 {
	background: #FFFFFF;
	width: 100px;
	height: 50px;
}
</style>
	
<script type="text/javascript">
window.onload = function(){
	var div1 = document.getElementById("div1");
	var div2 = document.getElementById("div2");
	div2.onclick = function(){
		div1.style.background = (div1.style.background == '#000000') ? '' : '#000000';
	};
};
</script>

<div id="div1">
	<div id="div2"></div>
</div>
 
Старый 04.09.2010, 21:05
Новичок на форуме
Отправить личное сообщение для avchizh Посмотреть профиль Найти все сообщения от avchizh
 
Регистрация: 30.03.2010
Сообщений: 5

subzey: можно попробовать как это может помочь? в ручную считать клики?

monolithed: извини не понял идею, у меня 2 дива лежат в одном паренте а у тебя один в другом это серьезная разница.
 
Старый 04.09.2010, 21:22
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

avchizh

Какая разница как они лежат? Вызывай событие использую самый верхний элемент, для этого либо если есть необходимость, то положи еще один полностью прозрачный див как сказал subzey
 
Старый 04.09.2010, 21:26
Новичок на форуме
Отправить личное сообщение для avchizh Посмотреть профиль Найти все сообщения от avchizh
 
Регистрация: 30.03.2010
Сообщений: 5

Твой вариант не подходит т.к. не обязательно клик пришел на ниже лижайщий элемент, нужно вычислять координаты клика и если они в приделах нижнего объекта то прокидывать событие, но это же гемор и не красиво так?
 
Старый 04.09.2010, 23:49
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Можно сделать подобную проверку:
element.onclick = function(event){
	var event = event || window.event;
	var target = event.target || event.srcElement;
	if(target.tagName == 'DIV' && target.className = 'someclass'){
		this.style.background = '#000000';
	}
};


Также если нужно то еще и проверять с какого и на какой элемент ушел курсор event.relatedTarget || event.fromElement / event.toElement; и тд..
 
Старый 05.09.2010, 09:21
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от monolithed
var target = event.target || event.srcElement;
Эм, так клик как раз придет на див-заглушку.
 
Старый 05.09.2010, 09:27
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Просто интересно: откуда взялся такой странный кейс?
 
Старый 05.09.2010, 09:59
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Предпологаю еще, если известны окружащие элементы то можно использовать: nextSubling / previousSubling
 

Опции темы