Большой Воронежский Форум
» Веб-дизайн>jQUERY. Клик по экрану..не по элементу. как?
AlexanderSergeev 17:13 23.05.2012
Такой вопрос. на сайте множетство элементов, которые рандомно могут растянуться на весь экран.

Как прописать "клик по области экрана", не зная какой элемент сейчас на переднем плане? Короче имитация тупого клика мышкой куда-нибудь. [Ответ]
ProcXel.A 17:40 23.05.2012
Насколько я понял, click получает параметр eventObject. Поэтому, по идее, можно всем элементам назначить вот такую функцию click( function( eventObject ) { MyClick( eventObject ) } )

а уже в MyClick описать, что делать с элементом. При этом элемент каждый раз будет приходить разный, а действия над ним будут одинаковые. Но я не пробовал так пока делать. Попробуй.

http://jquery-docs.ru/Events/click/#toptions

А, не. eventObject - это, походу, объект события. А доступ к текущему элементу просто через this работает. Должно получиться. [Ответ]
sape 18:32 23.05.2012
Код:
window.onclick = function(e){
    e.target // тот конкретный элемент, по которому ты кликнул
}
А сымитировать тебе надо...
нужен метод
Код:
event.initMouseEvent(type, canBubble, cancelable, view, 
                      detail, screenX, screenY, clientX, clientY, 
                      ctrlKey, altKey, shiftKey, metaKey, 
                      button, relatedTarget);
как-то так что ли например
Код:
var evt = document.createEvent("MouseEvents");
   evt.initMouseEvent("click", true, true, window,
     0, 0, 0, 0, 0, false, false, false, false, 0, null);
[Ответ]
ProcXel.A 19:47 23.05.2012
С помощью jQuery это будет примерно так:
Код:
<body>
    <img name="scale_img" width="100" height="100" src="image/list/bolt.jpg" />
    <img name="scale_img" width="100" height="100" src="image/list/gaika.jpg" />
    <img name="scale_img" width="100" height="100" src="image/list/shurup.jpg" />
</body>
Код:
var current_click_elem = null
var current_zoom_elem = null
var anim_elems = []
var speed = 1000

$( document ).ready( function() {
	SetClicks()
} )

function SetClicks() {
	$( 'img' ).each( function () {
		if( this.name == 'scale_img' ) {
			anim_elems.push( this ) 
			$( this ).click( function() {
				current_click_elem = this
				$.each( anim_elems, function() {
					if( this == current_click_elem ) {
						if ( current_zoom_elem == this ) {
							$( this ).animate( { width: '100', height: '100' }, speed )
						}
						else {
							$( this ).animate( { width: '50%', height: '50%' }, speed )
							current_zoom_elem = this
						}
					}
					else {
						$( this ).animate( { width: '100', height: '100' }, speed )
					}
				} )
			} )
		}
	} )
}
[Ответ]
AlexanderSergeev 21:30 23.05.2012
Эх попробовал - да, это вариант, но опять же - элементов гора. Даже если прописать клик-событие на все, условия то нет - неизвестно по чему клик будет. А все объекты (если не на весь экран в данный момент) имеют свои функции.
Короче === забил, попроще решения поищу.
Спасибо. [Ответ]
silly 22:08 23.05.2012
Так что здесь нужно? Имитировать событие или навесить обработчик? [Ответ]
ProcXel.A 22:24 23.05.2012
AlexanderSergeev, если ты точно скажешь, что хотел, то тебе помогут. Просто ты непонятно объясняешь.

Сообщение от AlexanderSergeev:
неизвестно по чему клик будет

current_click_elem - это и есть тот элемент, по которому кликнули.
[Ответ]
Вверх