Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.11.2015, 18:40
Новичок на форуме
Отправить личное сообщение для Tema_Ka Посмотреть профиль Найти все сообщения от Tema_Ka
 
Регистрация: 03.11.2015
Сообщений: 3

Как закрыть всплывающее окно ?
Необходимо изменить код так, чтобы окно закрывалось не только на крестик, но и на блок подложки.

Имеется отрывок кода:
init: function() {
            jQuery('body').prepend('<div id="pn_advanced_wp_popup_mdf"></div>');
            jQuery('body').prepend('<div id="alert_advanced_wp_popup"></div>');
            jQuery('body').prepend('<div id="advanced_wp_popup_overlay"></div>');
            //***
            try {
                jQuery('.pn_ig_wp_popup_close_mdf').life('click', function() {
                    self.close(jQuery(this));
                });
                jQuery('.pn_ig_wp_popup_close_mdf').life('click', function() {
                    self.close(jQuery(this));
                });
            } catch (e) {
                
            }
        }

Где кнопка закрытия окна это .pn_ig_wp_popup_close_mdf, как сделать чтобы при нажатии и кнопки .pn_ig_wp_popup_close_mdf и блока #advanced_wp_popup_overlay окно закрывалось ?

Код целиком:
var PN_ADVANCED_WP_POPUP_MDF = function() {
    var self = {
        zindex: 9900,
        popup_li: null,
        params: null,
        init: function() {
            jQuery('body').prepend('<div id="pn_advanced_wp_popup_mdf"></div>');
            jQuery('body').prepend('<div id="alert_advanced_wp_popup"></div>');
            jQuery('body').prepend('<div id="advanced_wp_popup_overlay"></div>');
            //***
            try {
                jQuery('.pn_ig_wp_popup_close_mdf').life('click', function() {
                    self.close(jQuery(this));
                });
                jQuery('.pn_ig_wp_popup_close_mdf').life('click', function() {
                    self.close(jQuery(this));
                });
            } catch (e) {
                
            }
        },
        popup: function(params) {
            params = self.validate_params(params);
            jQuery('#pn_advanced_wp_popup_mdf').append('<div class="pn_advanced_wp_popup_li" style="width:' + params.width + 'px;margin-left:-' + params.width / 2 + 'px;">');
            this.popup_li = jQuery('#pn_advanced_wp_popup_mdf div:last-child');
            jQuery(this.popup_li).css('z-index', self.zindex++);
            jQuery(this.popup_li).append('<div class="advanced_wp_popup_container" style="width:' + params.width + ';">');
            jQuery(this.popup_li).append('<div class="advanced_wp_popup_buttons">');
            var popup = jQuery(this.popup_li).find('.advanced_wp_popup_container');
            /***/
            if (params.title.length > 0) {
                popup.append('<div class="pn_titlebar" />');
                popup.children('.pn_titlebar').append('<h6>').children('h6').html(params.title);
                popup.children('.pn_titlebar').append('<a href="javascript:void(0);" class="pn_ig_wp_popup_close_mdf"></a>');
            }
            /***/
            jQuery(popup).append('<div class="advanced_wp_popup_content">');
            jQuery(popup).find('.advanced_wp_popup_content').html(params.content);
            try {
                jQuery(this.popup_li).draggable({
                    handle: '.pn_titlebar'
                });
            } catch (e) {

            }

            jQuery(this.popup_li).fadeTo(200, 1);
            self.overlay(params.overlay, self.zindex - 1);
            //***            
            self.open(params, this.popup_li);
        },
        overlay: function(mode, zindex) {
            jQuery('#advanced_wp_popup_overlay').css('z-index', zindex);
            if (mode) {
                jQuery('#advanced_wp_popup_overlay').show();
            } else {
                jQuery('#advanced_wp_popup_overlay').hide();
            }
        },
        open: function(params, popup_li) {
            self.params = params;
            jQuery.each(params.buttons, function(index, button) {
                if (button.action == 'close') {
                    jQuery(popup_li).find('.advanced_wp_popup_buttons').append('<a href="javascript:void(0);" class="pn_button pn_ig_wp_popup_close_mdf">' + button.name + '</a>');
                    return;
                }

                //*****
                if (button.display == 'undefined') {
                    button.display = 'inline-block';
                }

                if (button.close) {
                    jQuery(popup_li).find('.advanced_wp_popup_buttons').append('<a href="javascript:pn_advanced_wp_popup_mdf.do_action(' + index + ');void(0);" data-name="' + button.name + '" class="pn_button pn_ig_wp_popup_close_mdf" style="display:' + button.display + ';">' + button.name + '</a>');
                } else {
                    jQuery(popup_li).find('.advanced_wp_popup_buttons').append('<a href="javascript:pn_advanced_wp_popup_mdf.do_action(' + index + ');void(0);" data-name="' + button.name + '" class="button" style="display:' + button.display + ';">' + button.name + '</a>');
                }

            });
            //***
            if (params.open !== undefined) {
                params.open();
            }
        },
        set_title: function(title) {
            jQuery(this.popup_li).find('.advanced_wp_popup_container .pn_titlebar h6').html(title);
        },
        show_button: function(name) {
            jQuery('#pn_advanced_wp_popup_mdf').find('.advanced_wp_popup_buttons').find("a[data-name*='" + name + "']").css('display', 'inline-block');
        },
        get_content: function() {
            return jQuery(this.popup_li).find('.advanced_wp_popup_content').html();
        },
        set_content: function(html) {
            return jQuery(this.popup_li).find('.advanced_wp_popup_content').html(html);
        },
        set_height: function(height, animate, animation_time, opacity) {
            if (animate) {
                jQuery(this.popup_li).find('.advanced_wp_popup_content').animate({
                    opacity: opacity,
                    height: "toggle"
                }, animation_time);
            } else {
                jQuery(this.popup_li).find('.advanced_wp_popup_content').css('height', height);
            }
        },
        close: function(_this) {
            var popup = jQuery(_this).parents('div.pn_advanced_wp_popup_li');
            window.setTimeout(function() {
                jQuery(popup).fadeOut(0, function() {
                    jQuery(this).remove();
                    self.overlay(0);
                });
            }, 100);
        },
        do_action: function(index) {
            jQuery.each(this.params.buttons, function(i, button) {
                if (i == index) {
                    button.action(self);
                    if (button.close !== undefined) {
                        if (button.close == 1) {
                            //TODO
                        }
                    }
                    return false;
                }
            });
        },
        validate_params: function(params) {
            if (params.title === undefined) {
                params.title = "";
            }

            if (params.overlay === undefined) {
                params.overlay = 0;
            }

            if (params.width === undefined || params.width === null) {
                params.width = 800;
            }

            if (params.buttons === undefined) {
                params.buttons = {
                    0: {
                        name: mdf_lang_cancel,
                        action: 'close'
                    }
                };
            }

            return params;
        }
    };
    return self;
};
//*****

var pn_advanced_wp_popup_mdf = null;
jQuery(document).ready(function() {
    pn_advanced_wp_popup_mdf = new PN_ADVANCED_WP_POPUP_MDF();
    pn_advanced_wp_popup_mdf.init();
});
Ответить с цитированием
  #2 (permalink)  
Старый 03.11.2015, 23:28
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Сообщение от Tema_Ka
life
live

Какой ужас тут происходит в коде, где такому обучаются? За такое бы руки отрывать.

Последний раз редактировалось ruslan_mart, 03.11.2015 в 23:33.
Ответить с цитированием
  #3 (permalink)  
Старый 04.11.2015, 11:55
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

Сообщение от Ruslan_xDD
где такому обучаются
Представьте человека, который немного представляет что такое html и css (благо на это нужно немного времени). И вот этот человек получает заказ на создание полноценного сайта с регистрацией, соц. кнопками, форумом, чатом и т.д.. И если у человека нет знакомых серверных разрабов, то где он должен брать информацию? Естественно он будет гуглить по каждому вопросу и главное сделать, чтобы хоть как то работало.
Ответить с цитированием
  #4 (permalink)  
Старый 04.11.2015, 12:28
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

EmperioAf, это очень плохо. Человек заказывает сайт, он ничего не понимает в программировании и не понимает как дерьмово плохо его сайт сделан изнутри. А это ведь производительность, и не только. И самое печальное, что таким программистам, которые знают только основы HTML 4, платят вполне адекватную зарплату. Собственно, зачем изучать программирование и все его тонкости, когда можно тупо вставлять готовые куски кода на jQuery? Ведь на это много ума не нужно.
Ответить с цитированием
  #5 (permalink)  
Старый 04.11.2015, 13:16
Новичок на форуме
Отправить личное сообщение для Tema_Ka Посмотреть профиль Найти все сообщения от Tema_Ka
 
Регистрация: 03.11.2015
Сообщений: 3

Сообщение от Ruslan_xDD Посмотреть сообщение
EmperioAf, это очень плохо. Человек заказывает сайт, он ничего не понимает в программировании и не понимает как дерьмово плохо его сайт сделан изнутри. А это ведь производительность, и не только. И самое печальное, что таким программистам, которые знают только основы HTML 4, платят вполне адекватную зарплату. Собственно, зачем изучать программирование и все его тонкости, когда можно тупо вставлять готовые куски кода на jQuery? Ведь на это много ума не нужно.

Ни кто ни чего не заказывал, я пишу сайт для себя, в свое удовольствие. На получение объемных знаний языков программирования нужно большое количество времени, к чему я непременно приду, но не сразу. Ruslan_xDD, зато, смотрю у тебя очень много ума и появился он сразу при рождении.
Ответить с цитированием
  #6 (permalink)  
Старый 04.11.2015, 13:26
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Сообщение от Tema_Ka
Ruslan_xDD, зато, смотрю у тебя очень много ума и появился он сразу при рождении.
А что Вы хотели услышать, выкладывая свой код во всеобщий доступ? Это форум, умейте выслушать критику. Я вёл беседу с EmperioAf, и конкретно про Вас я ничего плохого не сказал. Да и на "ты" мы не переходили.

Последний раз редактировалось ruslan_mart, 04.11.2015 в 13:29.
Ответить с цитированием
  #7 (permalink)  
Старый 04.11.2015, 13:40
Новичок на форуме
Отправить личное сообщение для Tema_Ka Посмотреть профиль Найти все сообщения от Tema_Ka
 
Регистрация: 03.11.2015
Сообщений: 3

Сообщение от Ruslan_xDD Посмотреть сообщение
А что Вы хотели услышать, выкладывая свой код во всеобщий доступ? Это форум, умейте выслушать критику. Я вёл беседу с EmperioAf, и конкретно про Вас я ничего плохого не сказал. Да и на "ты" мы не переходили.


Выкладывая "свой" код во всеобщий доступ, я лишь хотел услышать, как его доработать под мои нужны, потому как я перепробовал очень многое, но пока не могу найти ответ. Хотя, думаю, для профи это вообще не задача.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Всплывающее окно Rooner jQuery 1 23.04.2014 13:15
Как в fancybox нажав ссылку в модальном окне отклыть другое окно ? ilyas-> Элементы интерфейса 1 16.10.2013 10:29
Как передать переменную в модальное окно sinsir jQuery 24 20.06.2013 16:59
Посоветуйте как сделать модальное окно battrack jQuery 3 12.07.2012 15:42
Пропадает меню при переводе курсора на всплывающее окно Adept_90 Элементы интерфейса 14 10.07.2012 21:34