新手问题 关于 jquery-uploader 和 masonry 的一个问题

levan · 2013年06月17日 · 最后由 Levan 回复于 2013年06月17日 · 3215 次阅读

学习 Ryan 的视频,还有网上搜集的一些关于 masonry 的一些帖子,在逐步学习做瀑布流,但是遇到一个问题,想请教一下,谢谢。 图片已经实现了异步上传,但是新上传的文件并没有遵照已有的样式:

刷新之后:

继续上传,就会藏在最后面了。

请问这个应该怎么处理呢?让新上传的图片能够遵从样式

http://masonry.desandro.com/methods.html

用 appended 或者 layout 方法。注意如果用图片需要图片加载完再重排,不然高度会是错误的。可以找个 jquery onload 的插件

@doitian 我试了不过不行。。。 在app/views/photos/create.js.erb原来的代码是这样,点击上传图片,无需刷新直接显示,只是样式不对,没有加在后面

$("#masonry").append("<%= j render(@photo) %>"); 

改为

$("#masonry").masonry('appended', '<%= j render(@photo) %>');

上传图片没显示,要刷新才行,用错方法了吗?我 JS 知道的不多。。。谢谢

你要传给 DOM collection,这样 masonry 才能对上号。如果 j render(@photo) 返回的只有一个根结点可以用 $ 先转成 DOM

el = $("<%= j render(@photo) %>");
$('#masonary').append(el);
$('#masonary').masonary('appended', el);

如果不只一个根结点,可以用个临时的 div

el = $(document.createElement('div')).html("<%= j render(@photo) %>").children();
...

@doitian 参照你的提示,我试了很久没有搞定。。。二十分钟后,发现原来你代码里打错了一词masonary,不过改完就搞定啦!谢谢!图片上传的位置算是正确了,不过到某个特定的地方的时候,添加就会叠加: 请问知道这个怎么解决吗?是 masonary 自身的问题吗?因为我拉宽一下再缩小一下浏览器页面又正常了。不用刷新。

@doitian 我大概知道了,需要用到其他插件,否则高度不正确对吧

需要 登录 后方可回复, 如果你还没有账号请 注册新账号