使用 jquery 重新渲染页面

Posted

技术标签:

【中文标题】使用 jquery 重新渲染页面【英文标题】:Re-render a page using jquery 【发布时间】:2017-03-20 23:16:24 【问题描述】:

在反应中,我可以通过从控制器传递结果轻松地重新渲染视图。我不想在这个阶段使用 React,想知道是否可以使用 JQuery?

我的页面上的对象很少,点击后,我应该会看到它的内容。单击另一个对象,我看到它的内容等。感觉?我的灵感来自this dribbble。

我可能做得不对,但这就是我所拥有的:

控制器:

def index
  selected_contract = params[:selected_contract] || current_user.contracts.last.id
  @contracts = current_user.contracts.order(created_at: :desc).all
  @selected_contract = current_user.contracts.find_by(id: selected_contract)
end

查看:

<% @contracts.each do |contract| %>
  <button class="ui button test" id="<%=contract.id%>"><%=contract.name%></button>
<% end %>

......................................
When clicked, show its content
....................................

<%= @selected_contract.name %>

JS:

$( ".ui.button.test" ).click(function(e) 
  let  id  = this
  console.log(id)
  $.ajax(
    url: `/url/$id`,
    type: 'POST',
    success: function(result) 
      //$('#listview').redraw()
      console.log('success')
    
  );
);

路由设置正确,因此我可以很好地获取控制器中的参数。是否有重新渲染视图,就像在 React for jquery 中重新渲染道具一样?我这样做是否正确?

【问题讨论】:

看看这里coderwall.com/p/kqb3xq/rails-4-how-to-partials-ajax-dead-easy。您基本上需要.js.erb 或等效项,并且您的操作需要响应js,在模板(.js.erb 文件)中,您可以使用 jquery 替换/呈现页面中您需要的任何内容.. 我明白了。我会读一读。谢谢。 @fanta YEAAHHHH 这行得通!感谢您的链接! 【参考方案1】:

如果您使用的是 jquery listview,这应该可以工作。

$( "#listview" ).listview( "refresh" );

参考 https://api.jquerymobile.com/listview/#method-refresh

或者因为它的rails,您也可以在服务器端重新加载或渲染部分视图。

【讨论】:

以上是关于使用 jquery 重新渲染页面的主要内容,如果未能解决你的问题,请参考以下文章

nodejs怎么使用layui渲染页面

angularjs加载渲染完页面怎么更改数据?

easyUI,重新渲染

js大数据量如何实现页面的局部渲染(不是局部刷新)--解决方法

React 数据改变后页面没有重新渲染

EasyUI使用Jquery.load动态加载时重新渲染