【发布时间】:2011-07-18 15:18:16
【问题描述】:
我有一个 ASP.NET MVC 应用程序,我正在使用两个 JQuery 插件:colorbox 和 jcrop。我的问题是颜色框调整大小功能。将内容加载到颜色框后,我调用 resize 函数来调整颜色框的大小以更好地适应其内容。这很好用,除了在此之后我立即将 jcrop 插件添加到组合中。 Jcrop 在颜色框调整大小功能完成之前稍微触发。因此,它会扭曲 jcrop 的数据。这会导致裁剪工具在初始移动时跳转,如下例所示:
请注意,在上面的示例中,裁剪选择器如何在初始移动时跳转,如以下问题所示:
jQuery Jcrop setSelect shows visually, but when clicked to move, it jumps
我发现阻止这种情况的唯一方法是将 jcrop 位包装在 setTimeout() 中并将代码延迟 1 秒以确保在代码触发之前完成调整大小,如下例所示:
现在,当您拖动裁剪区域时,它一开始不会跳动。使用setTimeout() 绝对是我不喜欢的一种技巧,所以我想知道是否有人有任何建议。如果只有jQuery.colorbox.resize() 接受其设置对象的回调函数。
谢谢!
【问题讨论】:
-
我看不出http://jsfiddle.net/Xg84D/12/ 的问题。你能再提供一个样品吗?
-
在第一个例子中开始拖动裁剪方块。它会跳到图像的右下角。然后开始拖动第二个中的裁剪方块,你会发现它像黄油一样光滑,没有跳跃。在第一个示例中,它在初始拖动后仅跳跃一次,但足以令人讨厌。
-
好的!知道了!我可以看到问题...
-
发生这种情况是因为 jcrop 代码运行时 jQuery.colorbox.resize() 未完成调整大小。延迟一秒钟通常足以确保调整大小完成,但我不喜欢它。在较慢的 javascript 引擎中,调整大小可能在一秒钟后仍然无法完成,但再过一段时间,等待 jcrop 加载就会变得烦人。
标签: javascript jquery jquery-plugins colorbox