0

我正在用 Ruby on Rails、jQuery 和 Embedly API 编写一个应用程序。我像这样写了一个视频部分:

<%= div_for video do %>

<%= link_to 'video', video.video_url, :class => 'oembed' %>

<% end %>

并在视图中渲染该部分index

<div id ='video_div'>
  <%= render @videos %>
</div>

然后我的 application.js 文件获取链接并使用 Embedly API 嵌入视频并显示缩略图。我最初用 CSS 隐藏视频,我希望每个视频及其各自的缩略图都在自己的 div 中。这意味着我希望每个视频/缩略图对都在自己的 div 中,这样我就可以将缩略图直接放在视频的顶部。我试过这样做:

$('a.oembed').embedly({maxWidth:300,'method':'replace'}).bind('embedly-oembed', function(e, oembed){ 
    var id = $(this).parent().attr('id');
    $(id).append($("<img>", { src: oembed.thumbnail_url, width:200 }));
});

我的想法是,由于 div_for 嵌入式 ruby​​ 创建了一个具有唯一 id 的 div,围绕着每个最初是链接的视频,我会转到链接的父级(具有唯一 id 的 div),并获取唯一 id 属性,然后将缩略图附加到该 div。但是,在浏览器中检查我的 HTML 代码后,没有附加缩略图。我做错了什么,我怎样才能得到我想要的?

4

2 回答 2

0

看起来问题出在这一行:

 $(id).append($("<img>", { src: oembed.thumbnail_url, width:200 }));

它应该是:

$('#' + id).append($("<img>", { src: oembed.thumbnail_url, width:200 }));

但是,$(this).parent()已经返回了您所追求的元素,因此不需要您使用其 id 进行的所有工作:

$(this).parent().append("<img>" ...);
于 2011-03-14T23:32:10.083 回答
0

我的怀疑是,要么不是您认为的嵌入,而是创建更多的 html,因此您尝试导航到 id 的地方可能无法到达您认为应该存在的位置。

如果页面上有一些元素,我会在id周围放置一个警报以检查其值。

您还可以使用要查找的内容的显式选择器调用 parent(),因此如果嵌入不生成任何 div,您可以添加 parent('div')。

您也不需要查找要追加的 id,您可以直接从 parent() 即 parent().append() 中完成。这样,您就可以为自己节省一个选择器调用。

于 2011-03-14T23:33:43.467 回答