打开一个模式对话框,其中包含单击表格单元格时的动态数据
Open a modal dialog box, containing dynamic data on table cell click
我正在努力实现标题所示的目标。目前,我可以使用显示<div>
的内容
document.write("<table><tr>");
...
document.write("<td onclick='"window.location.href='#popup''" ... >" + name + "'"</td>);
将<div>
定义为:(我尝试使用data-name
)
<div id="popup" data-name="name" class="dialog">
<a href="#close"><img src="..." alt="..." width="166" height="104" align="left" /></a>
<p>
Hello (dynamic name here)!
</p>
</div>
我试着打电话给:
document.write("<td onclick='"popup(" + name + ")'" class='"programme'">" + name + "</td>");
function popup(movieName)
{
var pop = document.getElementById("popup");
pop.setAttribute("data-movie", movieName);
document.location.href = "#popup";
};
但我不再以这种方式看到弹出窗口。
我最终想"弹出"成为一个模式对话窗口,它将显示在表格的顶部。目前,由于它是在表上方定义的,所以它只是在显示时向下推表。
编辑:感谢您的帮助。@carlosHT和@TimeDead。两种解决方案都有效,都教会了我很多。我选择了carlosHT的解决方案,因为它是一个较小的实现。我唯一需要添加的是:
.ui-dialog
{
clear: both;
}
这将阻止对话框窗口具有非常高的标题栏。
这里有一个使用jQuery和jQueryUI的替代方案:
<html>
<head>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/base/jquery-ui.css"/>
<script src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script>
<style>
#popup{
display: none;
border: 1px solid black;
}
.cell-which-triggers-popup{
cursor: pointer;
}
.cell-which-triggers-popup:hover{
background-color: yellow;
}
</style>
</head>
<body>
<div id="popup" class="dialog">
<a href="#close"><img src="http://bit.ly/1qAuZh3" alt="..." width="166" height="104" align="left"/></a>
<p></p>
</div>
<table border="1">
<tr>
<td class="cell-which-triggers-popup">exampleName</td>
</tr>
</table>
</body>
</html>
<script>
$( document ).ready(function() {
$(document).on("click", ".cell-which-triggers-popup", function(event){
var cell_value = $(event.target).text();
showPopup(cell_value)
});
function showPopup(your_variable){
$("#popup").dialog({
width: 500,
height: 300,
open: function(){
$(this).find("p").html("Hello " + your_variable)
}
});
}
});
</script>
示例:http://jsfiddle.net/xaqtawog/1/
您也可以在没有jQuery UI的情况下实现这一点(因为当时它对我不起作用,尽管我正在慢慢地转换到它)
您可以使用jQuery和类似的JS来实现一个功能模式:(从外部文件调用css以设置模态样式)
在文件中设置函数文字:
(function($) {
}(jQuery)
在我们的函数文本中,我们将让它构建我们的模态(这也在CSS中添加了JS,您可以手动设置任何位置,这是为了示例)
设置默认参数并执行我们的其他构建器功能:
$.fn.siteModal = function(prop) {
options = $.extend({
height: "500",
width: "500",
title: "default modal box",
description: "This is a place holder Modal to put in our things into.",
top: "20%",
left: "30%",
}, prop);
};
return(
add_block_page(),
add_popup_box(),
$('.modalBox').fadeIn()
);
return this;
};
这个家伙将设置一些默认参数,我们的模态将使用这些参数,这样它就知道显示的大小和方式。
现在我们设置我们的建设者功能
function add_block_page() {
var block_page = $('<div class="blockPage"></div>');
$(block_page).appendTo('body');
}
这个家伙将创建一个新的div,它将在我们的modals背景的网页上创建一个半透明的黑色覆盖层,然后将其附加到正文中,以便显示。
现在我们要添加弹出模式本身:
function add_popup_box() {
var pop_up = $('<div class="modalBox"><a href="#" class="closeModal">X</a><div class="innerModal"><h2>' + options.title + '</h2><p>' + options.description + '</p></div></div>');
$(pop_up).appendTo('.blockPage');
$('.closeModal').click(function() {
$('.blockPage').fadeOut().remove();
$(this).parent().fadeOut().remove();
});
}
这个家伙将为模态创建我们的div(一个外部div,然后是一个内部div,内部div将包含我们的内容),这也设置了我们的X按钮,这样当你点击X时,模态将关闭并正确返回网页。
我的HTML看起来有点像:
<a href="#" onclick="$.fn.siteModal(this)" class="termsLink">Terms</a>
所以现在当";术语";点击链接就会打开一个新的模式!(这就是我现在所说的模态)
这是一种非常基本的方法,如果你愿意,你必须再次在外部css中构建你的样式,或者你可以让jquery在构建这个模态时添加css。选择权在你。希望这能有所帮助。
编辑
我有一个CSS函数,可以为我们的模态框创建外观,你可以把这个家伙扔进去:
function add_styles() {
/*Block page overlay*/
var pageHeight = $(document).height();
var pageWidth = $(window).width();
$('.blockPage').css({
'position': 'absolute',
'top': '0',
'left': '0',
'background-color': 'rgba(0,0,0,0.6)',
'height': pageHeight,
'width': pageWidth,
'z-index': '10'
});
$('.modalBox').css({
'position': 'absolute',
'left': options.left,
'top': options.top,
'display': 'none',
'height': options.height + 'px',
'width': options.width + 'px',
'border': '1px solid #fff',
'box-shadow': '0px 2px 7px #292929',
'-moz-box-shadow': '0px 2px 7px #292929',
'-webkit-box-shadow': '0px 2px 7px #292929',
'border-radius': '10px',
'-moz-border-radius': '10px',
'-webkit-border-radius': '10px',
'background': '#f2f2f2',
'z-index': '50',
});
$('.innerModal').css({
'background-color': '#fff',
'height': (options.height - 50) + 'px',
'width': (options.width - 50) + 'px',
'padding': '10px',
'margin': '15px',
'border-radius': '10px',
'color' : '#5a5a5a',
'text-align' : 'center',
'-moz-border-radius': '10px',
'-webkit-border-radius': '10px'
});
}
并将其放入prop函数的调用中:add_styles()
- 如何在单击按钮时显示2行1列的表格
- 若单击按钮,则为表格行上色
- 单击“按钮”而不是单击“表格行”
- 单击每个表格行中的复选框时启用文本框
- 如何使用单击属性和工具提示动态创建表格单元格,该工具提示将超链接到页面
- 单击时将表格单元格从范围更改为输入
- 将单击表格单元格重定向到其中的
- 单击按钮-jQuery/JavaScript时显示表格
- 单击并用CTRL+C复制值时高亮显示html表格单元格
- 在表格中单击表单外的操作
- 在动态表格单元格跨度中单击时更新一个权重值
- 知道单击“确定”时选择了表格的哪个单元格
- 当我单击添加新按钮(WORDPRESS,PHP)时,我需要在表格中隐藏
- 单击表格行和单元格
- 在表格最后一行(链接)中显示菜单,并在单击菜单项时显示模式窗口
- 单击时更改表格行的背景颜色
- 如果用户单击表格行,则显示或隐藏表格行(HTML/JQuery)
- 如何制作整行以及其中的复选框,当我在表格行内单击时单击和取消单击
- 通过单击按钮清除选定的表格单元格
- 如何在按钮单击时显示表格行