因此,我创建了一个将坐标保存到数据库的图像标记器,该标记器已在指定用于标记图像的页面上实现。然后,我在主页上使用 erb 块调用这些图像以遍历相关坐标,然后使用 jQuery 在所述位置显示 div (.tagged)。但是,当标签显示在主页上时,它们不在我在连接页面上标记它们时所在的位置。坐标相同,但位置不同。任何人对这是为什么有任何想法?任何帮助将非常感激。
遍历图像的 ERB 块。在这种特殊情况下,有四个图像。
<% if @new_manual.present? %>
<% n = 0 %>
<% @new_manual.steps.each do |step| %>
<% n += 1 %>
<% i_connection = Contact.find(step.input_contact) %>
<span class="i_contact i_contact<%= n %>" 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 %>" ="spanid<%= n %>" data-index="<%= n %>"></span>
<% o_connection = Contact.find(step.output_contact) %>
<span class="o_contact o_contact<%= n %>" data-pos-x="<%= o_connection.pos_x %>" data-pos-y="<%= o_connection.pos_y %>" data-pos-width="<%= o_connection.pos_width %>" data-pos-height="<%= o_connection.pos_height %>" id="spanid<%= n %>" data-index="<%= n %>"> </span>
<% cord = CordType.find(step.contact_item) %>
<div class="main_panel">
<div style='margin: auto; width: 600px;'>
<div id="image_panel<%= n %>" style="float:left; width:600px; position:relative;">
<%= image_tag(i_connection.image.image.url(:large)) %>
<div class="i_tagmap<%= n %>"></div>
</div>
</div>
</div>
<div class="main_panel">
<div style='margin: auto; width: 600px;'>
<div id="image_panel<%= n %>" style="float:left; width:600px; position:relative;">
<%= image_tag(o_connection.image.image.url(:large)) %>
<div class="o_tagmap<%= n %>"></div>
</div>
</div>
</div>
<% end %>
<% end %>
jQuery(标签如何显示在主页上)
<script type="text/javascript">
$(document).ready(function(){
$('span.i_contact').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');
var taggedNode = $('<div class="tagged" />')
taggedNode.css({
"border":"5px solid red",
"width":pos_width,
"height":pos_height,
"left":xpos,
"top":ypos
});
var n = $(this).data('index')
$('.i_tagmap' + n).append(taggedNode)
console.log(taggedNode.position())
});
$("span.o_contact").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');
var taggedNode = $('<div class="tagged" />')
taggedNode.css({
"border":"5px solid red",
"width":pos_width,
"height":pos_height,
"left":xpos,
"top":ypos
});
var n = $(this).data('index')
$('.o_tagmap' + n).append(taggedNode)
});
});
</script>
这对我来说是一件很难解释的事情,所以如果我遗漏了任何可能有益的内容,我也很乐意将其添加进去。