Перейти к содержимому



Скрытие блока при клике вне его области JavaScript

#1

Поделиться сообщением #1



Avin

Avin
  • Неактивные
  • 82 сообщений
  • Репутация: 1
0

Отправлено 05 Июнь 2012 - 20:12

Добрый день, уважаемые форумчане!

Прошу Вашей помощи в следующей проблеме.

Имеется блок ракрывающийся и скывающийся по клику

Onclick="toggle_visibility(my_div);"

Сама функция ракрывающая и скрывающая блок

function toggle_visibility(id)
    {
	    var e = document.getElementById(id);

	    if(e.style.display == 'block') {
		    e.style.display = 'none';
    }
	    else {
		    e.style.display = 'block';
    }
    }

Все отлично работает, когда кликаешь по ссылке у которой прописано Onclick="toggle_visibility('my_div');"

А я бы хотел, чтобы блок так же скрывался (только скрывался) если произведен клик вне моего "my_div"

Уважаемые знатоки, прошу Вашей помощи.

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Как Скрыть И Показать Блоки На Jquery?
  2. Скрипт работает только на одном блоке
  3. JavaScript скрыть показать блок, при открытии одного, другие скрываются, как?
  4. Эффективно ли скрытие ссылок через js?
  5. Можно заключать javascript в <div>

#2

Поделиться сообщением #2



c0ns0l3

c0ns0l3
  • Пользователь
  • 264 сообщений
  • Репутация: 49

Отправлено 06 Июнь 2012 - 18:38

Сделай событие на клик в body или html
  • 0

#3

Поделиться сообщением #3



Avin

Avin
    Topic Starter
  • Неактивные
  • 82 сообщений
  • Репутация: 1

Отправлено 06 Июнь 2012 - 20:45

А как это сделать? какой функцией? как обработать ее?

Подскажите, пожалуйста.
  • 0

#4

Поделиться сообщением #4



c0ns0l3

c0ns0l3
  • Пользователь
  • 264 сообщений
  • Репутация: 49

Отправлено 06 Июнь 2012 - 20:50

Ну так же само идешь только к тэгу body

document.getElementsByTagName('body')

Цепляешь к нему ф-цию на клик. Которая скроет елемент твой.

Я могу написать исходник только на jQuery, вспоминать сейчас DOM в основе JS - времени нету.

Единственное что, тебе прийдется еще проверить, что б у event.target небыл твой елемент для скрытия который, и является ли он сейчас видимым.
  • 0

#5

Поделиться сообщением #5



Symphony

Symphony
  • Пользователь
  • 636 сообщений
  • Репутация: 54

Отправлено 07 Июнь 2012 - 02:59

аааа...точно, если сайт средней сложности, чего jq не цепляешь? Ускоришь же работу.
  • 0


#6

Поделиться сообщением #6



c0ns0l3

c0ns0l3
  • Пользователь
  • 264 сообщений
  • Репутация: 49

Отправлено 07 Июнь 2012 - 05:50

Avin, вообще погуглился.. на jQuery есть даже плагин оказывается на clickoutside... работает по аналогии
document.click.event.target!=this - так что я где то правильно начал рассуждать :)
  • 0

#7

Поделиться сообщением #7



Symphony

Symphony
  • Пользователь
  • 636 сообщений
  • Репутация: 54

Отправлено 07 Июнь 2012 - 09:15

Думаю, там и без плагинов jq можно обойтись


  • 0


#8

Поделиться сообщением #8



Avin

Avin
    Topic Starter
  • Неактивные
  • 82 сообщений
  • Репутация: 1

Отправлено 07 Июнь 2012 - 21:27

Спасибо за подробные ответы!!!!

попробую сделать, по результату отпишусь, не закрывайте пока тему :)
  • 0

#9

Поделиться сообщением #9



by-gari

by-gari
  • Неактивные
  • 12 сообщений
  • Репутация: 0

Отправлено 08 Июнь 2012 - 12:46

Если хочется изучить все досконально тебе сюда. Есть правда и чушь детская но посмотреть советую.
  • 0

#10

Поделиться сообщением #10



Symphony

Symphony
  • Пользователь
  • 636 сообщений
  • Репутация: 54

Отправлено 08 Июнь 2012 - 12:59

зашел на сайт который дал товарищ, что постов выше.

на этой странице http://goo.gl/DXpcS читаю комментарий.

Мне 66 лет. Высшее получил когда персоналок в помине не было. Друзей искать не привык, да и поздновато. Могли бы сразу написать, что для регистрации нужна компания. С приветом. Лев.

Что это было?
  • 0


robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru