Плагин изменения размера jQuery colorbox - PullRequest
2 голосов
/ 18 июля 2011

У меня есть приложение ASP.NET MVC, и я использую два плагина JQuery: colorbox и jcrop.Моя проблема с функцией изменения размера colorbox.После того, как я загружаю содержимое в colorbox, я вызываю функцию resize, чтобы изменить размер colorbox, чтобы лучше соответствовать его содержимому.Это прекрасно работает, за исключением того факта, что сразу после этого я добавляю плагин jcrop в микс.Jcrop немного срабатывает до завершения функции изменения размера colorbox.Из-за этого он искажает данные для jcrop.Это приводит к тому, что инструмент кадрирования прыгает при начальном движении, как в этом примере:

http://jsfiddle.net/Xg84D/12/

Обратите внимание, как в приведенном выше примере селектор кадрирования переходит на начальное движение, как ввопрос:

jQuery Jcrop setSelect показывает визуально, но при нажатии для перемещения он скачет

Единственный способ остановить это - обернуть бит jcropв setTimeout() и задержите код на 1 секунду, чтобы убедиться, что изменение размера завершено до запуска кода, как в этом примере:

http://jsfiddle.net/Xg84D/13/

Теперь при перетаскивании области обрезкисначала он не прыгает.Использование setTimeout() - определенно хак, который мне не нравится, поэтому я хотел бы знать, есть ли у кого-нибудь предложения.Если бы только jQuery.colorbox.resize() принял функцию обратного вызова для своего объекта настроек.

Спасибо!

1 Ответ

2 голосов
/ 18 июля 2011

В версии для разработчиков colorbox на GitHub есть коммит, который решает вашу проблему.
Смотри здесь

Я думаю, что вы должны отредактировать функцию resize в файле jquery.colorbox.js, чтобы принять параметр обратного вызова. КАК ссылку предложить.

@@ -450,7 +450,7 @@    
     });    
   };     

-  publicMethod.resize = function (options) {    
+  publicMethod.resize = function (options, loadedCallback) {    
     if (open) {    
       options = options || {};

@@ -475,7 +475,7 @@

       }

       $loaded.css({height: settings.h});           

-      publicMethod.position(settings.transition === "none" ? 0 : settings.speed);    
+      publicMethod.position(settings.transition === "none" ? 0 : settings.speed, loadedCallback);
     }
   };

Удачи!

...