Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.10.2011, 22:53
Интересующийся
Отправить личное сообщение для korner Посмотреть профиль Найти все сообщения от korner
 
Регистрация: 26.06.2010
Сообщений: 29

Наведение мыши
Я знаю что это уже обсуждалось где то, Но я не знаю как правильно сформировать вопрос.
Как бы так объяснить, представим что есть body и div, div растянут на весь экран.

<body>
 <div style="position:absolute;left:0;top:0;width:100%;height:100%">
 </div>
</body>


$('body,div').hover(function(){
        $(this).addClass('active')
    },function(){
        $(this).removeClass('active');
    });


Что произойдет, если навести курсор на страницу, то этот класс применяться к body и div, вот и вся загвоздка, такого не должно быть, класс должен применяться только к div, ведь div перекрыл элемент body.

А теперь представим что в body есть еше один div который не растянут на весь экран, так вот при наведение на него курсора должен применяться класс только к нему.
Вроде объяснил, раньше видел что та подобное но не помню где и как это называется.
Ответить с цитированием
  #2 (permalink)  
Старый 28.10.2011, 23:30
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Вы не учитываете, что ваш див находится внутри body - следовательно, при наведении на него, событие срабатывает и для body. Вариант - останавливать всплытие через event.stopPropagation(). Или, при наведении на body проверять event.target, если он равен body - добавлять класс.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #3 (permalink)  
Старый 28.10.2011, 23:35
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Код поменяется как-то так (надеюсь, ничего не напутал, ибо с jQuery работаю редко):
$('body,div').hover(function(event){
        event.stopPropagation();    
        $(this).addClass('active')
    },function(event){
        event.stopPropagation();
        $(this).removeClass('active');
    });
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #4 (permalink)  
Старый 28.10.2011, 23:57
Интересующийся
Отправить личное сообщение для korner Посмотреть профиль Найти все сообщения от korner
 
Регистрация: 26.06.2010
Сообщений: 29

Не работает, тока стало глючить малеха ))
Ответить с цитированием
  #5 (permalink)  
Старый 29.10.2011, 00:28
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

А, собственно, что мешает снять обработчик с body, если ваш див растянут на весь экран?

Проверьте. В этом примере вы вешаете обработчик на все дивы. А вам нужен только один - присвойте ему id и находите по нему.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #6 (permalink)  
Старый 29.10.2011, 00:34
Интересующийся
Отправить личное сообщение для korner Посмотреть профиль Найти все сообщения от korner
 
Регистрация: 26.06.2010
Сообщений: 29

Да вот мне нужно на все, как это делает firebug в браузере firefox.
Там есть анализ элемента, когда наводиш курсор на определенный элемент и он подсвечивается в виде тени.

Так вот мне так и нужно сделать, но застрял на этом этапе когда нужно определить на какой именно элемент я навел курсор ))
Ответить с цитированием
  #7 (permalink)  
Старый 29.10.2011, 01:33
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

$('body,div').hover(function(event){
        if (event.target==this)
                $(this).addClass('active')
    },function(event){
        if (event.target==this)
                $(this).removeClass('active');
    });


Попробуй так. Вообще, проблема может быть в том, как ты добавляешь обработчик. Попробуй добавить через bind на mouseover/mouseout.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #8 (permalink)  
Старый 29.10.2011, 11:13
Интересующийся
Отправить личное сообщение для korner Посмотреть профиль Найти все сообщения от korner
 
Регистрация: 26.06.2010
Сообщений: 29

Ура, работает, сделал через bind, гы а почему так получается )
Ну да ладно, главное что работает.
Спасибо за ответ trikadin, учту на будущие.
Ответить с цитированием
  #9 (permalink)  
Старый 29.10.2011, 15:11
Интересующийся
Отправить личное сообщение для korner Посмотреть профиль Найти все сообщения от korner
 
Регистрация: 26.06.2010
Сообщений: 29

И еше один вопрос
Есть к примеру html код:
<div class="demo">this is text</div>


Получить содержимое можно так:
alert($('.demo').html())


В результате я получу: this is text
Все правильно, но вот мне теперь нужно получить весь код включая родителя.
Должно быть так: <div class="demo">this is text</div>
Как мне такое реализовать ?
Ответить с цитированием
  #10 (permalink)  
Старый 29.10.2011, 17:34
Интересующийся
Отправить личное сообщение для korner Посмотреть профиль Найти все сообщения от korner
 
Регистрация: 26.06.2010
Сообщений: 29

Все, разобрался, тема закрыта ))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнение события при наведение курсора мыши на элемент jQuery2011 Элементы интерфейса 10 12.01.2015 23:09
Вместо наведения мыши, нужен клик Jaroslav jQuery 4 24.10.2011 10:50
мыши, кнопки, event.button и other browsers, but not in IE idudiq Events/DOM/Window 1 03.10.2009 11:09
Имитация нажатия кнопки мыши Mantell Общие вопросы Javascript 3 19.02.2009 17:03
Как имитировать событие мыши Andrey_V Общие вопросы Javascript 4 10.11.2008 16:39