0

我有一个 Rails 应用程序,可以为您提供人员列表。

  1. 当您单击一个名称时,它会向您显示一个由带有 jquery 滑块的 ajax 调用带来的 div,您可以对其进行调整。

  2. 然后,您可以关闭该 div。

  3. 如果您再次打开它(对于同一用户),ajax 调用会返回以使用滑块检索 div

  4. 除了滑块,一切都在那里。为什么?

代码:在index.html里面,调用了一个div

<div id='relationships'>
  <%= render @relationships %>
</div>

div 有一个部分。这是部分 _relationship.html.erb

<%= div_for relationship do %>
  <%= link_to image_tag('images/orange_man.jpg'), show_path(:id => relationship.id), :remote => true %>
<% end %>

当您单击图像“橙色人”时,js 请求将执行,直到显示操作:

def show
  @relationship = Relationship.find(params[:id])
  respond_to do |format|
    format.html
    format.js
  end
end

然后因为它是一个 js 调用,所以调用了 show.js.erb

$("#relationship_<%= @relationship.id %>").append("<%= escape_javascript(render 'knows_me')%>");

它调用了 know_me 部分。_knows_me.html.erb

<div id ="relationship_knows_me_#{@relationship.id}">

  <a class="close">X</a> 
  *****this is where you click to hide the div*****

  <% div_slider_id = "slider_knows_me_#{@relationship.id}" %>

  <%= form_tag('/relationships/update/', :remote => true) do %>

    <%= hidden_field_tag 'relationship_id', value = @relationship.id %>

    <div id="<%= div_slider_id %>" class="sliders"></div>

  <% end %>

</div>

<script type='text/javascript'>

$('a.close').on("click", function() {
    $(this).parent().slideUp();
  });

$(document).ready( function() {
  $(function() {
    $( "#<%= div_slider_id %>" ).slider({
      orientation: "horizontal",
      range: "min",
      value: <%= @knows_me %>,
      min: 0,
      max: 100,
      stop: function( event, ui ) {
        $( "#<%= amount_id %>" ).val( ui.value );
        $(this).submit();
      }
    });
 });
});
</script>

为什么幻灯片只第一次出现?为什么在我滑动 div 并再次请求后它不会显示?

提前致谢

4

2 回答 2

0

而不是使用 div id 使用 div 类。我遇到了同样的问题,但在使用 div 类后解决了

于 2012-05-03T14:38:09.430 回答
0

事实证明,超级工程师是对的。div 的 id 已经存在,所以自从我把它藏起来后,它就不会再出现了。我只是在收到回电并解决问题时更改了 div 的 ID。

于 2012-08-22T20:26:05.480 回答