0

そこで、各画像タグの座標を取得する erb ブロックを作成しました。このブロックでは、各画像のタグをその座標に表示したいと考えています。ただし、反復内のすべてのタグではなく、単一のタグのみが表示されています。理由はありますか?.each() と何か関係がありますか?

<% if @new_manual.present? %>
<% @new_manual.steps.each do |step| %>
<% i_connection = Contact.find(step.input_contact) %>
<span class="i_connection" data-pos-x="<%= i_connection.pos_x %>" data-pos-y="<%= i_connection.pos_y %>"  data-pos-width="<%= i_connection.pos_width %>" data-pos-height="<%= i_connection.pos_height %>"> </span>  
<br>
<div class='image_panel'>
    <%= image_tag(i_connection.image.image.url(:large)) %>
<div class='planetmap'></div>


<% end %>
<% end %>
</div>

<script type="text/javascript">
$(document).ready(function(){
$("span.i_connection").each(function() {
    var pos_width = $(this).data('pos-width'); 
    var pos_height = $(this).data('pos-height');
    var xpos = $(this).data('pos-x');
    var ypos = $(this).data('pos-y');

    $(".tagged_box").css("display","block");
    $(".tagged").css("border","5px solid red");

    if ((xpos !== undefined) && (ypos !== undefined)) {
    console.log('X:' + xpos + 'px' + ' ' + 'Y:' + ypos +'px');         
        $('.planetmap').append('<div class="tagged"  style="width:'+pos_width+'px;height:'+
        pos_height+'px;left:'+xpos+'px;top:'+ypos+'px;" ><div class="tagged_box" style="width:'+pos_width+'px;height:'+
        pos_height+'px;display:none;" ></div>')
         }
});   //END OF SPAN.CONNECTION ITERATION
});

編集 IDをクラスに変更すると、写真ごとにタグが表示されます。成功!ただし、尊重されたタグではなく、両方とも表示されます。これは .each() メソッドと関係があると思います。

編集 #2 最新のコード

ブロックは 2 つの画像を反復処理します。尊重される画像ごとに 1 つのタグではなく、両方の画像に .tagged が表示されるようになりました

<div class="container">
<% if @new_manual.present? %>
<% @new_manual.steps.each do |step| %>
    <% i_connection = Contact.find(step.input_contact) %>

<span class="i_connection" data-pos-x="<%= i_connection.pos_x %>" data-pos-y="<%= i_connection.pos_y %>"  data-pos-width="<%= i_connection.pos_width %>" data-pos-height="<%= i_connection.pos_height %>"> </span>
<br>
<div class="image_panel">
    <%= image_tag(i_connection.image.image.url(:large)) %>
        <div class='planetmap'></div>
</div>
    <script type="text/javascript">
    $(document).ready(function(){
$("span.i_connection").each(function() {
    var pos_width = $(this).data('pos-width');
    var pos_height = $(this).data('pos-height');
    var xpos = $(this).data('pos-x');
    var ypos = $(this).data('pos-y');

    $(".tagged_box").css("display","block");
    $(".tagged").css("border","5px solid red");

    // if ((xpos !== undefined) && (ypos !== undefined)) {
    // console.log('X:' + xpos + 'px' + ' ' + 'Y:' + ypos +'px');         
        $('.planetmap').append('<div class="tagged"  style="width:'+pos_width+'px;height:'+pos_height+'px;left:'+xpos+'px;top:'+ypos+'px;" ><div class="tagged_box" style="width:'+pos_width+'px;height:'+
            pos_height+'px;" ></div>')
         // }
});   //END OF SPAN.CONNECTION ITERATION
});
</script>   

<% end %>   
<% end %>

4

2 に答える 2

0

あなたが提供したコードから、最終的に生成された HTML がどのように見えるかを理解するのは少し難しいですが、jQuery セレクターが のspanクラス"i_connection"を持つスパンを探している間に、あなたのクラスが"connection". ただし、実際にはこれにより.each()がまったく実行されないため、これがすべての問題ではない可能性があります。

于 2013-07-21T22:44:54.210 に答える