将 DIV 显示为叠加层

Display a DIV as over overlay

本文关键字:叠加 显示 DIV      更新时间:2023-09-26

我一直是一个后端开发人员,并试图使用 RoR 做一些 UI 工作。

I have a list object that I want to display.
Object1
Object2
Object3
Object4
...

我已经做到了这一点。

现在,当用户单击 Object1 时,我想显示对象中的详细信息(类似于 http://jquerytools.org/demos/overlay/index.htm)

我理解示例中的代码。

您有隐藏的div,单击一下即可显示它。但是就我而言,我有很多对象(几百个),并且每个对象都非常大,我不想在加载页面时检索所有数据。所以目前当用户点击一个对象时,我只是打开一个新页面,其中所有数据都详细显示。我想要的是打开一个像示例一样的叠加层,并在其中渲染数据。

我不熟悉 UI 开发的术语,并且在我开始自己编码之前,我有一个困难的类型来寻找它的现有实现。

许可对我来说是一个问题,所以我想坚持使用vanilla jQuery和RoR.,而不是使用具有各种许可方案的第三方库。

正如我在评论中所说,您可以使用 AJAX 执行此操作。它的作用是,当您单击链接时,它不会重新加载整个页面,而是异步向服务器发送请求并返回响应,而响应又可以在javascript中处理以更新页面。

因此,在您的场景中,当单击链接时,您只需向服务器发送 ajax 请求,检索要在覆盖框中显示的数据,设置文本,然后执行必要的操作以显示覆盖框本身。

当您尝试处理 AJAX 本身时,它可能会导致一些小问题。所以我建议使用这里找到的JQuery库的ajax API:http://api.jquery.com/jQuery.ajax/。这更易于使用,并且跨浏览器兼容。

对于这样的div

<div id="overlay"></div>
<button id="load">Load Box</button>

你可以像这样使用一些:

$("#load").click(function(){
  //ajax request
  $.ajax({
    url: "your/web/service.aspx",
    cache: false
  })
  .done(function(response_text){
     //setting the response got to the overlay box
     //this can be a plain text or html or json. 
     //you need to set the box appropriately.  
     $("#overlay").text(response_text);
     //then do the needful to display overlay box
  });
});

正如Lakshmi的评论中所述,您应该使用Ajax方法加载和显示过多的数据。您的 Ajax 响应应该用对象详细信息填充隐藏元素,然后触发过度显示。