Javascript.RU

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

Не могу разобраться в коде
(function(c) {
    c.fn.darkbox = function() {
        function j() {
            clearInterval(m);
            d.css("background-position", "24px 24px")
        }

        function h() {
            j();
            k.animate({
                opacity: 0
            }, q, function() {
                b.removeClass(r);
                d.stop();
                l.unbind("error", n).attr("src", "")
            })
        }

        function o(a) {
            if (27 === a.which || 32 === a.which)
                if (0 === c("div.darkbox:hidden").length) {
                    a.preventDefault();
                    h()
                }
        }

        function n() {
            j();
            b.addClass("darkbox-error");
            setTimeout(h, s)
        }
        c('<div class="darkbox"><div class="darkbox-shadow"></div><div class="darkbox-canvas"><img alt=""><div class="darkbox-button" title="Close"></div></div></div>').appendTo("body");
        var q = 100,
            s = 800,
            r = "darkbox-on darkbox-done darkbox-loaded darkbox-error",
            t = /mac/i.test(navigator.platform) ? "darkbox-button-left" : "darkbox-button-right",
            b = c("div.darkbox"),
            k = b.children("div.darkbox-shadow"),
            d = b.children("div.darkbox-canvas"),
            l = d.children("img"),
            u = d.children("div.darkbox-button"),
            m = 0,
            i = 0;
        k.css({
            opacity: 0
        }).click(h);
        u.addClass(t).click(h);
        l.load(function() {
            j();
            var a = c(this),
                g = 1,
                e = a.width(),
                f = a.height();
            g = b.width();
            var p = b.height();
            if (0 === e && 0 === f) setTimeout(function() {
                a.load()
            }, 10);
            else {
                if (e > g - 50 || f > p - 50) {
                    g = Math.min((g - 50) / e, (p - 50) / f);
                    e = Math.round(e * g);
                    f = Math.round(f * g)
                }
                b.addClass("darkbox-loaded");
                d.animate({
                    width: e,
                    marginLeft: -e / 2,
                    height: f,
                    marginTop: -f / 2,
                    opacity: 1
                }, 400, function() {
                    b.addClass("darkbox-done")
                })
            }
        });
        c(document).keypress(o).keydown(o);
        this.click(function(a) {
            a.preventDefault();
            a = c(this);
            b.addClass("darkbox-on");
            d.css({
                width: "",
                marginLeft: "",
                height: "",
                marginTop: "",
                opacity: 0.5
            });
            m = setInterval(function() {
                d.css("background-position", "24px " + (24 - 56 * i) + "px");
                i = 7 <= i ? 0 :
                    i + 1
            }, 90);
            l.one("error", n).css({
                width: "",
                height: ""
            }).attr("src", a.attr("href")).attr("alt", a.attr("title"));
            k.animate({
                opacity: 0.6
            }, 200)
        });
        return this
    }
})(jQuery);

Код открывает изобраение в увеличенном размере. В заблуждения вводит следующее
1:
[JS](function(c) {
    c.fn.darkbox = function() {

Почему с, а не $
2:
c('<div class="darkbox"><div class="darkbox-shadow"></div><div class="darkbox-canvas"><img alt=""><div class="darkbox-button" title="Close"></div></div></div>').appendTo("body");

Читал в документации, но не нашел такой метод создания объекта, как я понимаю создается элемент "c" так? или что иное?
3:
var a = c(this)

Эту карамбу я вообще не понимаю, что в итоге "a"?
Ответить с цитированием
  #2 (permalink)  
Старый 21.08.2014, 17:12
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Карбонат,
с = jQuery
Ответить с цитированием
  #3 (permalink)  
Старый 21.08.2014, 17:13
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

(function (trololo) {alert(trololo)})("ololo")

a - объект jQuery
Ответить с цитированием
  #4 (permalink)  
Старый 21.08.2014, 17:13
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

1. c - это ссылка на jQuery
2. методами жквери (а на него ссылается переменная с) создается див согласно тегам в строке и добавляется в боди
Ответить с цитированием
  #5 (permalink)  
Старый 21.08.2014, 17:21
Интересующийся
Отправить личное сообщение для Карбонат Посмотреть профиль Найти все сообщения от Карбонат
 
Регистрация: 21.08.2014
Сообщений: 14

Спасибо, все понял!
Ответить с цитированием
  #6 (permalink)  
Старый 21.08.2014, 17:23
Интересующийся
Отправить личное сообщение для Карбонат Посмотреть профиль Найти все сообщения от Карбонат
 
Регистрация: 21.08.2014
Сообщений: 14

t = /mac/i.test(navigator.platform)
В чем смысл этой строчки?
Ответить с цитированием
  #7 (permalink)  
Старый 21.08.2014, 17:52
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

"Не мак ли у тебя случаем", вроде очевидно даже если не знать js.
__________________
29375, 35
Ответить с цитированием
  #8 (permalink)  
Старый 21.08.2014, 21:25
Интересующийся
Отправить личное сообщение для Карбонат Посмотреть профиль Найти все сообщения от Карбонат
 
Регистрация: 21.08.2014
Сообщений: 14

Ага, спасибо. Понял.
k.css({
            opacity: 0
        }).click(h);

Тут же такой порядок действий:
мы элементу k меняем css свойство opacity на 0 и ждем, пока кто-нибудь щелкнет по нему?
Ответить с цитированием
  #9 (permalink)  
Старый 21.08.2014, 21:47
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

нет, передаем обработчик вероятно
Ответить с цитированием
  #10 (permalink)  
Старый 21.08.2014, 22:08
Интересующийся
Отправить личное сообщение для Карбонат Посмотреть профиль Найти все сообщения от Карбонат
 
Регистрация: 21.08.2014
Сообщений: 14

а зачем тогда css({
opacity: 0
})
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[node-inspector] не могу разобраться, как им пользоваться Omnium Gatherum AJAX и COMET 1 21.11.2013 18:19
Не могу разобраться с навигацией по DOM Iktash Элементы интерфейса 2 24.02.2013 10:29
Не могу разобраться с калькулятором Innuenze Общие вопросы Javascript 8 05.10.2012 08:08
Не могу разобраться с двумерным массивом pro_xaoc jQuery 6 10.06.2012 12:11
Не могу разобраться с setTimeout bazilio2010 Общие вопросы Javascript 3 14.01.2012 00:17