如何隐藏和显示一个模态的内容
How do I hide and show the contents contents of a modal?
在我的模式中,我有一个链接。链接如下:
<%= link_to "HIDE DETAILS", '#', class:'right' %>
当我点击该链接时,我希望该链接显示"SHOW DETAILS"而不是"HIDE DETAILS",并且id="DETAILS"的div应该与其所有子元素一起从视图中消失。当再次单击链接时,链接显示"HIDE DETAILS"和要显示详细信息的div内容,反之亦然(切换功能)。当页面第一次显示时,我希望与详细信息及其所有内容的div最初不显示和链接应显示"show details"。我如何编写Javascript来做到这一点?它一定很简单。
这里是div:
<div id="details">
<ul class="errors"></ul>
<div style="float:left; margin-right:0.5em; color: #860038"><i>media type: </i></div><%= @image.media_type %>
<br>
<div style="float:left; margin-right:0.5em; color: #860038"><i>subject: </i></div> <%= @image.subject %>
<br>
<div style="float:left; margin-right:0.5em; color: #860038"><i>title: </i></div> <%= @image.title %>
<br>
<div style="float:left; margin-right:0.5em; color: #860038"><i>full description: </i></div>
<%= @image.description %>
<br>
<div style="float:left; margin-right:0.5em; color:#860038;"><i>location: </i></div>
<%= @image.location %>
<br>
<div style="float:left; margin-right:0.5em; color: #860038;"><i>date: </i> </div>
<br>
<div style="float:left; margin-right:0.5em; color: #860038;"><i>author: </i></div>
<%= @image.author %>
<br>
<div style="float:left; margin-right:0.5em; color: #860038;"><i>source: </i></div>
<%= @image.source %>
<br>
<div style="float:left; margin-right:0.5em; color:#860038;"><i>tags: </i> </div> <%= @image.tag_list.join(' - ') %>
<br>
<br>
<div style="float:left; margin-right:0.5em; color:#009345;">This item is shared by</div><span style="color:#0F004E;"><%= @image.user.name_first+ ' ' %> </span><span style="color:#860038;"><%=@image.user.name_last %><br><br>
<%= link_to "Edit Item", '#', class: "btn btn-lg btn-primary" %>
</div>
试试这个HTML:
<button id="myButton"> Click</button>
<div id="myDiv">Hello</div>
这个JS:
$("#myButton").click(function(){
$("#myDiv").toggle();
});
初始隐藏,使用如下css:
<style>
#myDiv{
display: none;
}
</style>
如果你想要更具体的答案
给定:
<%= link_to "HIDE DETAILS", '#', class:'right' %>
试题:
$('.right').click(function(evt) {
evt.preventDefault();
$link = $(this);
$detail = $('#details');
if ($link.text() == "SHOW DETAILS") {
$link.text("HIDE DETAILS");
} else {
$link.text("SHOW DETAILS");
}
$detail.toggle();
}
UPDATED:如果链接是模态的,那么你需要动态地附加事件监听器,像这样:
$.fn.attachToggle = function() {
$(this).click(function(evt) {
evt.preventDefault();
$link = $(this);
$detail = $('#details');
if ($link.text() == "SHOW DETAILS") {
$link.text("HIDE DETAILS");
} else {
$link.text("SHOW DETAILS");
}
$detail.toggle();
}
}
然后在模态体上调用attachToggle
,例如:$([modal_body_id]).find('.right').attachToggle();
非常简单,只需使用Toggle
: -
//erb code
<h1 id="title">Toggle div onclick</h1>
<a class="right" href="javascript:void(0);" title="Toggle me">
<span id="toggle-text">SHOW</span> DETAILS
</a>
<div id="details" style="display:none;">
//js code
$('.right').on("click", function() {
//toggle the div
$("#details").toggle();
//update the text too
if ($("span#toggle-text").html() == "SHOW") {
$("span#toggle-text").html("HIDE");
} else {
$("span#toggle-text").html("SHOW");
}
});
检查此提琴
这很容易,而不是使用link_to rails帮助器,使用一个简单的link元素,因为您不需要转到rails视图,您不需要rails帮助器,但如果您需要它,只需使用ERB:
<a href="{%= view_path %}">Go!</a>
现在,在你的例子中,你只需要使用jQuery来:
- 更改链接文本(切换文本)
- 显示/隐藏您的内容详细信息
你可以这样做,非常简单:
$("#theLink").click(function() {
var link = $(this);
var content = $('.details');
if (link.text() === 'Show Details') {
link.text('Hide Details');
content.css('display', 'block');
} else {
link.text('Show Details');
content.css('display', 'none');
}
});
a {
font-family: sans-serif;
font-weight: 700;
text-decoration: none;
color: peru;
}
.details {
font-family: Arial, sans-serif;
color: white;
background: tomato;
padding: 20px;
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" id="theLink">Show Details</a>
<div class="details">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Commodi fugit iusto consequuntur distinctio omnis sint similique provident. Assumenda, est? Cumque inventore blanditiis officia corrupti voluptate qui quasi quae recusandae accusamus.
</div>
相关文章:
- 打开一个模态并将其链接到AngularJS中的指令
- bootstrap消除模态并显示另一个模态
- 包括来自另一个页面的Boostrap模态;t验证表单
- 使用一个 jquery 代码关闭多个模态
- Angularjs - 观察模态窗口从另一个控制器关闭
- angularJS,一个部分或模态通知,加载几秒钟后就会消失
- 如何将一个模态放在一边-显示其他模态(像..这样的向导)
- 当你有很多文本框时,如何从一个模态中只填充一个文本框
- 将数据从一个模态发送到另一个模态
- 从模态内部的主体复制一个谷歌地图
- 我可以点击一个带硒的模态上的按钮吗
- 创建一个模态指令,并将click事件绑定到angular js中
- 如何将iFrame与带有'#'在一个简单的模态框中
- 显示模态对话;在 IE 中打开一个新窗口
- 我开发了一个api,我希望它重定向到其他php页面,并在我点击api文件中的按钮时弹出模态
- 打开一个模态(在Codeigniter中),该模态从依赖于phpvar的URL加载(在iframe中)内容
- 创建一个模态窗口以使用 AngularJS 加载数据
- 引导多个模态关闭所有与最后一个模态
- 在 JSP 中设置一个值,从 javascript 传递给 JSTL 的模态
- 多个模态一个脚本