将图像/图标添加为数据表中的行值
Add image/icon as a row value in datatables
我需要在行的最后一列添加一个图像/图标。当我把鼠标悬停在那个图标上时,它应该有一个工具提示,应该显示来自服务器的数据。我不知道该如何实施。任何已经实现此功能的专家都请帮助我。提前感谢。
编辑
这是我拥有的示例数据,当悬停在上面时,我需要为最后一列添加一个图标,以显示工具提示中包含"数据"的工具提示。
{
"iTotalRecords": 5,
"sEcho": "1",
"aaData": [
[
"V2993ASFKH230943",
"Honda",
"Accord",
"data"
],
[
"V2993A39SNF30943",
"Honda",
"CRV",
"data"
],
[
"V4833A39SNF30943",
"Acura",
"TSX"
],
[
"V4833RE9SNF30943",
"Acura",
"TL",
"data"
],
[
"V9383RE9SNF30943",
"Acura",
"MDX",
"data"
]
],
"iTotalDisplayRecords": 5
}
[更新]
图像标签最终看起来像这样:
var imgTag = '<span class="mytext" ><span class="ui-icon ui-icon-wrench" ></span>';
一个要求也是在悬停时显示模式对话框。下面是打开模态的jquery代码。
$(".mytext").mouseover(
function() {
var width = 250;
var height = 270;
var posX = $(this).offset().left - $(document).scrollLeft()
- width + $(this).outerWidth();
var posY = $(this).offset().top - $(document).scrollTop()
+ $(this).outerHeight();
//alert(posX + ", " +posY);
$(".mytext").dialog({
resizable:false,
width : width,
height : height,
position : [ posX, posY ]
});
});
当我把鼠标悬停在它上面时,它不知何故不起作用。它不会触发jquery Modal
更新
你说得对,时间有问题。我解决了这个问题。现在,当我悬停在上面时,它正在将所有图像加载到模态中,即,我所拥有的行数就是打开的模态对话框的数量。我需要将值aData[3]传递给jquery模态。
这在一定程度上取决于工具提示的实现方式。每个第三方的"Fancy"JavaScript工具提示都会做不同的事情。这里的例子只是展示了如何获取两段数据(品牌和模型),并将它们推送到单元格的"标题"属性中,这将触发浏览器的内置工具提示。
我想你将使用一个工具提示插件或类似的东西,所以你必须采用示例的一般原则,并将它们适应特定的工具提示。好的,足够的序言。
--
这一切都将发生在fnRowCallback[update:1.10 forward只使用"rowCallback"]中,这是DataTables对象中的一个属性,您可以在初始化期间设置它。通过这样做,将发生的事情是,当每一行被呈现时,您有机会修改HTML(nRow),并在修改后返回它,以便将其推送到DOM中。
(注意:当它有助于可读性时,我倾向于制作比严格必要的更多的变量。我还保留了iDisplayIndex和iDisplayIndexFull。如果你想的话,你应该可以删除它们)
"fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
var theMake = aData[1],
theModel = aData[2];
var imgTag = '<img href="/images/icon.png" title="' + theMake + ' ' + theModel + '" class="hoverImage"/>';
/* result example: <img href="/images/icon.png" title="Honda CRV" class="hoverImage"/> */
$('td:eq(3)', nRow).html(imgTag); // replace the word "data" with the new image markup
return nRow;
}
现在,当您将鼠标悬停在图像上时,工具提示将显示"生成"answers"模型"。
同样,这对特定的工具提示插件没有任何作用,尽管你可能使用的插件也可以从标题中获取信息,这会很方便。对于这些插件,您只需要向触发插件的imageTag(class="tooltip"或其他)添加一个类。
[更新]
因此,以jQueryUI的对话框为例:许多自定义对话框函数会动态创建一个"容器"节点,然后调用dialog()
。我更喜欢在基础文档中有一个通用的可重用容器节点,然后在需要时填充它。
我喜欢在正文关闭之前把我的放在右边,因为当你完成它时,jQueryUI会把它粘在那里:
<!-- ... -->
<div id="dialogContainer"></div>
</body>
在CSS中,您可以将其设置为默认隐藏(#dialogContainer { display:none }
)。
现在你有了容器,你可以在上面使用.dialog()
函数。使用上面的原始示例(注意我已经向它添加了类"hoverImage"),你可以将aData[3]填充到图像的标题中,而不是我的示例中的任何内容。标题充当aData[3]数据的"存储"。
现在,在DataTables初始化的之外,在您的文档就绪函数(您可能已经有了一个)中,您可以绑定mouseenter事件:
$('#tableContainer').on('mouseenter', '.hoverImage', function(e) {
e.preventDefault; // if you want to prevent the browser tooltip
var dialogContainer = $('#dialogContainer');
dialogContainer.html(this.title); // replace contents of dialog with the title of the image
dialogContainer.dialog({ /* options */ });
});
我没有尝试将图像数据本身存储在数据库中,而是将服务器上的图像存储在一个文件夹中,并将图像的地址存储在数据库。您还可以存储其他元信息,如高度、宽度和(正如您所提到的)alt文本。如果需要,您可以构建将图像上传到该文件夹的代码,当您上传图像时,您有机会将图像数据添加到数据库中。
- 用程序搜索JQuery数据表中的文本
- 画布数据到图像
- 具有rowGrouping的数据表无法隐藏列
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 将单击事件添加到数据表
- 使用带有参数的数据表sAjaxSource
- 对角度数据表中括号内的数字进行排序
- 动态构建一个数据表与scriplets
- jquery数据表的自定义ko绑定
- 预览数据表单
- 如何在数据表中设置从Ajax响应选中的复选框
- DT数据表背景颜色为黑色,但仍有悬停和选择颜色
- 数据表-隐藏/显示列
- 对损坏的子行进行排序的数据表
- 数据表排序但对行进行分组
- 在数据表上显示图像
- Jquery 数据表筛选器/搜索表中的图标图像
- 将图像/图标添加为数据表中的行值
- 如何使数据表背景图像可点击
- 如何在角数据表中组合数据和显示图像