2011-07-18 98 views
2

我有一个ASP.NET MVC应用程序,我使用两个JQuery插件:colorbox和jcrop。我的问题是与colorbox调整大小功能。在将内容加载到colorbox之后,我调用resize函数来调整colorbox的大小以更好地适应其内容。这个工程很好,除了之后我立即添加了jcrop插件。在Colorbox调整大小功能完成之前,Jcrop会稍微启动。因此,它会扭曲jcrop的数据。这将导致裁切工具跳上最初的感动,在这个例子中:jQuery colorbox插件调整大小回调

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

请注意,在上面的例子中作物选择跳跃在最初的感动,在这个问题:

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

我已经找到了阻止这种情况的唯一办法,就是包裹jcrop位在setTimeout()和延缓码1秒,以确保调整大小的代码触发之前完成,因为在这个例子中:

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

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

谢谢!

+0

我无法看到[http://jsfiddle.net/Xg84D/12/](http://jsfiddle.net/Xg84D/12/)的问题。你能提供另一个样本吗? – Tocco

+0

在第一个示例中,开始拖动裁剪正方形。它会跳到图像的右下角。然后开始拖拽第二个裁剪方块,你会发现它像黄油一样平滑,没有跳跃。在初始拖动后它只在第一个例子中跳过一次,但它足以令人讨厌。 – Chev

+0

好的!得到它了!我可以看到问题... – Tocco

回答

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); 
    } 
    }; 

祝你好运!

+0

或者,也许你可以下载它[这里](https://github.com/jasonmoo/colorbox/zipball/91de326355a51cfcf49762a41f97479f6fc9b9a1)(压缩) – Tocco

+0

宏伟! +1并接受:) – Chev

+0

现在这http://jsfiddle.net/Xg84D/14/奇妙地工作:D – Chev

相关问题