Jquery 按需模式渲染?
据我目前所知,jquery modals在页面加载期间呈现,并由用户通过hidden=true到hidden=false值触发 当modals保持在每页的最小值时,这一切都是很好的。但是,我的问题是,如果你有一个完整的情态动词列表,当你点击它时会弹出一个需要编辑的情态动词信息列表。例如,一个文档网格,您希望单击一个文档,并有一个模式弹出窗口来编辑小文档。在页面加载期间呈现所有这些文档不会降低用户体验。难道没有办法“按需”加载和呈现该模式吗 这种行为的标准做法是什么 我知道rails的方法是为每个文档加载一个新页面,但我很好奇如何才能做到这一点Jquery 按需模式渲染?,jquery,ruby-on-rails,ruby-on-rails-3,Jquery,Ruby On Rails,Ruby On Rails 3,据我目前所知,jquery modals在页面加载期间呈现,并由用户通过hidden=true到hidden=false值触发 当modals保持在每页的最小值时,这一切都是很好的。但是,我的问题是,如果你有一个完整的情态动词列表,当你点击它时会弹出一个需要编辑的情态动词信息列表。例如,一个文档网格,您希望单击一个文档,并有一个模式弹出窗口来编辑小文档。在页面加载期间呈现所有这些文档不会降低用户体验。难道没有办法“按需”加载和呈现该模式吗 这种行为的标准做法是什么 我知道rails的方法是为每个
我还标记了jQuery群组,因为这个库是我最熟悉的库。我在应用程序中经常这样做。这是我的一个应用程序中反馈按钮的代码 它创建对话框,当按下按钮时,对话框的内容将动态加载
$(function () {
var button= $("#FeedbackButton");
if (button.length == 0)
button= $("<div id='FeedbackButton'>Feedback</div>").hide().appendTo("body");
var dialog = $("#FeedbackDialog");
if (dialog.length == 0)
dialog = $("<div id='FeedbackDialog'>Feedback</div>").hide().appendTo("body");
button.click(function () {
button.hide();
dialog.load("_FeedbackDialog.htm");
$(dialog).dialog({
title: "Feedback",
modal: true,
width: 800,
height: 300,
close: function () {
$(button).show();
}
});
});
});
$(函数(){
变量按钮=$(“#反馈按钮”);
如果(button.length==0)
按钮=$(“反馈”).hide().appendTo(“正文”);
变量对话框=$(“#反馈对话框”);
如果(dialog.length==0)
dialog=$(“Feedback”).hide().appendTo(“body”);
按钮。单击(函数(){
按钮隐藏();
加载(“_FeedbackDialog.htm”);
$(对话框).dialog({
标题:“反馈”,
莫代尔:是的,
宽度:800,
身高:300,
关闭:函数(){
$(按钮).show();
}
});
});
});
通过按需呈现模式,我假设您的意思是响应AJAX查询。在这种情况下,是的,有一种按需构建模式的方法。您需要做的是设置一个事件监听器,对控制器进行AJAX调用
# my_view.html
/* inside JS event trigger */
$.get("/get_modal.js")
然后在控制器中响应AJAX调用
# my_controller.rb
def get_modal
respond_to do |format|
format.js # this will execute get_modal.js (or get_modal.js.erb)
end
end
然而,您的“视图”将不是HTML,而是JS,它让您可以自由地做任何想做的事情
# get_modal.js
/* JS modal code */
有一个用户体验()堆栈交换站点。这可能是一个更好的问“标准实践”问题的地方。因为我在rails下工作,想要使用我想的标记技术。但我也会问,谢谢。我喜欢这个,但我有一个问题。你的视图代码在Reguard to the button中是什么样子的。单击代码,基本上你是如何将它绑定到你的视图的。或者是什么触发了它。哦,只需点击一下按钮。我删除了创建按钮的代码,因为它有点不相关(或者我是这么认为的)。我的脚本打算在任何页面上运行一次,并创建所有反馈功能,包括添加按钮。我再把它加进去。然而,由于这会加载到代码中,所以只会绑定到您喜欢的任何按钮。这不是特别的。好吧,你在动态创建按钮,你已经向我展示了它的可能性,我想我已经掌握了它的要点,可以在同一页面上使用多个按钮/链接。谢谢,我会在几分钟内接受答案,看看有没有人给我更多的选择。哈哈,没问题。如果有什么我没有提到的,请告诉我。我同意你的观点,也喜欢这种方法,但是你如何触发rails.html.erb中的$.get(“/xxxx”)?像对待任何.html文件一样对待.html.erb文件,并添加一个
标记,其中定义了$(document).ready
。然后,这允许您初始化DOM元素上的事件侦听器。