Javascript jQuery colorbox插件调整大小回调

Javascript jQuery colorbox插件调整大小回调,javascript,jquery,jquery-plugins,colorbox,Javascript,Jquery,Jquery Plugins,Colorbox,我有一个ASP.NETMVC应用程序,我正在使用两个JQuery插件:colorbox和jcrop。我的问题是colorbox resize函数。将内容加载到colorbox后,我调用resize函数来调整colorbox的大小,以更好地适应其内容。这非常有效,除了在这之后我立即将jcrop插件添加到混合中。Jcrop在colorbox resize函数完成之前稍微激发。因此,它会扭曲jcrop的数据。这会导致裁剪工具在初始移动时跳跃,如本例所示: 请注意,在上面的示例中,裁剪选择器如何在初始

我有一个ASP.NETMVC应用程序,我正在使用两个JQuery插件:colorbox和jcrop。我的问题是colorbox resize函数。将内容加载到colorbox后,我调用resize函数来调整colorbox的大小,以更好地适应其内容。这非常有效,除了在这之后我立即将jcrop插件添加到混合中。Jcrop在colorbox resize函数完成之前稍微激发。因此,它会扭曲jcrop的数据。这会导致裁剪工具在初始移动时跳跃,如本例所示:

请注意,在上面的示例中,裁剪选择器如何在初始移动时跳跃,如本问题所示:

我发现阻止这种情况的唯一方法是将jcrop位包装在
setTimeout()
中,并将代码延迟1秒,以确保在代码触发之前完成调整大小,如本例所示:

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


谢谢

在GitHub的colorbox开发版本中,有一个提交解决了您的问题。
看到了吗

我认为您应该编辑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);
     }
   };

祝你好运

我看不出有什么问题。您能提供另一个示例吗?在第一个示例中,开始拖动裁剪方块。它将跳转到图像的右下角。然后开始拖动第二个裁剪方块,你会发现它像黄油一样光滑,没有跳跃。在第一个示例中,它在初始拖动后只跳一次,但这足以让人恼火。好吧!知道了!我可以看到这个问题……之所以会出现,是因为jQuery.colorbox.resize()在jcrop代码运行时没有执行调整大小操作。延迟一秒钟通常足以确保调整大小完成,但我不喜欢这样。在速度较慢的javascript引擎中,调整大小可能在一秒钟后仍然无法完成,但再长一段时间,等待jcrop加载就会变得很烦人。或者,你可以下载它(zipped)@Alex,我可以给你一个提示吗?尽量避免对同一目标多次使用JQuery选择器。而不是
jQuery('#cropTool')
n次,使用:
var cropTool=jQuery('#cropTool')
并使用
cropTool
var检索值。AttRight,但这只是一个样本。我不假思索地把它敲了出来。相信我,我对实际实现中的代码可读性更为敏感。