ЙажаСценарий / Говнокод #10260 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
$(document).click(function (e) {
    if ($(e.target).parents().filter('#idAddItTopPopUpMenu:visible').length != 1) {
        $('#idAddItTopPopUpMenu').hide();
    }
    if ($(e.target).parents().filter('#idAddItProductDetailPopUpMenu:visible').length != 1) {
        $('#idAddItProductDetailPopUpMenu').hide();
    }
    if ($(e.target).parents().filter('#idPampItProductDetailPopUpMenu:visible').length != 1) {
        $('#idPampItProductDetailPopUpMenu').hide();
    }
    if ($(e.target).parents().filter('#idPrivacyProductPopUpMenu:visible').length != 1) {
        $('#idPrivacyProductPopUpMenu').hide();
    }
    if ($(e.target).parents().filter('#idSocialNetworkMenu:visible').length != 1) {
        $('#idSocialNetworkMenu').hide();
    }
    if ($(e.target).parents().filter('#idPampItTopPopUpMenu:visible').length != 1) {
        $('#idPampItTopPopUpMenu').hide();
    }
. . .
    if ($(e.target).parents().filter('div[id=idAreaLastMessage]:visible').length != 1 && $(e.target).parents().filter('div[id=idbtnMessages]').length != 1) {
        $('div[id=idListLastMessage]').hide();
    }
    if ($(e.target).parents().filter('div[id=idAreaLastAlert]:visible').length != 1 && $(e.target).parents().filter('div[id=idbtnAlert]').length != 1) {
        $('div[id=idListLastAlert]').hide();
    }
    if ($(e.target).parents().filter('div[id=idAreaNearestCalendar]:visible').length != 1 && $(e.target).parents().filter('div[id=idbtnNearestCalendar]').length != 1) {
        $('div[id=idListNearestCalendar]').hide();
    }
});

нет слов o_O

Запостил: DarkThinker DarkThinker, (Updated )

Комментарии (5) RSS

  • Где такой шлак работает.
    parents() вынес остатки моего разума, собираем всю родительскую цепочку ради того чтобы выяснить нажали мы вне popup и скрыть его.
    Можно создать фоновый див, который будет лежать под всеми окнами и ловить на себя клик, попутно скрывая все элементы с классом .popupBlock, который мы пропишем всем окнам.
    Ответить
    • И эта родительская цепочка собирается больше 10 раз, при каждом клике в любом месте страницы
      Ответить
      • и вся эта поебень господня только затем, чтобы проверить видимость элементов
        Ответить
  • Похоже, тут проверка, что если "кликнутый" элемент вне всплывающего окна, то закрыть это окно. Можно было сделать так: событие "e" содержит координаты клика (x,y), а вычислить левый верхний и нижний правый углы окна (слоя) легче легкого. Далее элементарной математикой узнаем, был ли клик вне окна, и если да, то закрываем его (прячем). Делать это, конечно, нужно только для видимых окон. Примерно такая структура:

    var winds=$("#win1,#win2,...");
    $(document).click(function (e) {
    var click={x: e.pageX, y: e.pageY}
    winds.each(function(){
    var bounds=getBounds(this);
    if (!isInside(click, bounds))
    $(this).hide();
    })
    }
    Ответить

Добавить комментарий

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8