jQuery colorbox插件调整回调

时间:2011-07-18 15:18:17

标签: javascript jquery jquery-plugins colorbox

我有一个ASP.NET MVC应用程序,我使用两个JQuery插件:colorbox和jcrop。我的问题是使用colorbox resize功能。将内容加载到颜色框后,我调用resize函数调整颜色框的大小以更好地适应其内容。除了之后我立即将jcrop插件添加到混音中之外,这种方法效果很好。在颜色框调整大小功能完成之前,Jcrop稍微触发。因此,它会扭曲jcrop的数据。这会导致裁剪工具跳转到初始移动,如下例所示:

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

请注意,在上面的例子中,裁剪选择器会在初始移动时跳转,如下所示:

jQuery Jcrop setSelect shows visually, but when clicked to move, it jumps

我发现停止此操作的唯一方法是将jcrop位包装在setTimeout()中并将代码延迟1秒以确保在代码触发之前完成调整大小,如下例所示: / p>

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

现在当您拖动裁剪区域时,它首先不会跳转。使用setTimeout()肯定是我不喜欢的黑客,所以我想知道是否有人有任何建议。如果只有jQuery.colorbox.resize()在其设置对象上接受了回调函数。

谢谢!

1 个答案:

答案 0 :(得分:2)

在GitHub的colorbox开发版中,有一个提交可以解决你的问题 见here

我认为您应该编辑jquery.colorbox.js文件中的函数resize以接受回调参数。如链接所示。

@@ -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);
     }
   };
祝你好运!