Javascript jQuery colorbox插件调整大小回调
我有一个ASP.NETMVC应用程序,我正在使用两个JQuery插件:colorbox和jcrop。我的问题是colorbox resize函数。将内容加载到colorbox后,我调用resize函数来调整colorbox的大小,以更好地适应其内容。这非常有效,除了在这之后我立即将jcrop插件添加到混合中。Jcrop在colorbox resize函数完成之前稍微激发。因此,它会扭曲jcrop的数据。这会导致裁剪工具在初始移动时跳跃,如本例所示: 请注意,在上面的示例中,裁剪选择器如何在初始移动时跳跃,如本问题所示: 我发现阻止这种情况的唯一方法是将jcrop位包装在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的数据。这会导致裁剪工具在初始移动时跳跃,如本例所示: 请注意,在上面的示例中,裁剪选择器如何在初始
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,但这只是一个样本。我不假思索地把它敲了出来。相信我,我对实际实现中的代码可读性更为敏感。