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 は、元はリンクだった各ビデオを一意の 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()を呼び出すこともできるため、embedlyでdivが生成されない場合は、parent('div')を追加できます。

また、追加する ID を検索する必要はありません。parent() から直接行うことができます。つまり、parent().append() です。そのようにして、セレクター呼び出しを節約できます。

于 2011-03-14T23:33:43.467 に答える