Jquery 在行之前但在表之外添加元素?

Jquery 在行之前但在表之外添加元素?,jquery,html,css,dom,jqgrid,Jquery,Html,Css,Dom,Jqgrid,我有一个表(jqGrid),我想在文档加载时在一行之前动态添加一个小图标/图像。图像将基于栅格的一个隐藏列值(日期)插入;它应该向页面/网格查看器标记行的重要性/紧迫性。我非常熟悉jQuery,而且我有自己的逻辑,但我唯一的问题是这个元素应该插入DOM结构中的什么位置,因为它不应该是实际网格的一部分。它应该刚好浮动到网格外的行的左侧。所以基本上,我要问的是: 1) 这个元素应该插入DOM结构中的什么位置?包含实际表?的div容器 2) 它应该如何设置样式(CSS) 我提出的唯一方法是获取相关行的

我有一个表(jqGrid),我想在文档加载时在一行之前动态添加一个小图标/图像。图像将基于栅格的一个隐藏列值(日期)插入;它应该向页面/网格查看器标记行的重要性/紧迫性。我非常熟悉jQuery,而且我有自己的逻辑,但我唯一的问题是这个元素应该插入DOM结构中的什么位置,因为它不应该是实际网格的一部分。它应该刚好浮动到网格外的行的左侧。所以基本上,我要问的是:

1) 这个元素应该插入DOM结构中的什么位置?包含实际表?的div容器

2) 它应该如何设置样式(CSS)

我提出的唯一方法是获取相关行的y坐标,并将其插入到设置为该y坐标的div容器(包含表)中。我不确定这是最好的还是正确的方法


编辑:这里有很多好方法。我正在考虑将“afterInsertRow”活动与David的方法结合起来。谢谢大家的帮助

为什么要在
表的外部添加任何元素?只需使用隐藏单元格包含要显示的图像/元素,并根据父级
tr
:hover
设置样式,给定标记:

<table>
    <thead>
        <tr>
            <th></th>
            <th>Column 'one'</th>
            <th>Column 'two'</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td></td>
            <td>row one</td>
            <td>row one</td>
        </tr>
        <tr>
            <td></td>
            <td>row two</td>
            <td>row two</td>
        </tr>
    </tbody>
</table>

这种方法似乎很管用(我认为在IE中也应该管用):

最简单的解决方案是使用jQuery的“my at of”定位:

1) 将元素附加到页面主体


2) 使用jQuery“my at of”定位将元素放置在您试图标记为紧急的行元素旁边

您可以使用jqGrid中的afterInsertRow事件:

var my_jqGrid = $('#id_table').jqGrid({
   ... //Other configs

   afterInsertRow: function(rowid, rowdata, rowelement){

       console.log(rowdata);
       //Here you code condition to insert in other div
       if(rowdata['key']=='status_ok'){
           $('#div_id').append( '<img src="image/ok.png" />'  );
       }          
   }

});
var my_jqGrid=$('#id_table').jqGrid({
…//其他配置
afterInsertRow:函数(rowid、rowdata、rowelement){
console.log(rowdata);
//在这里,您可以编写要插入到其他div中的条件
如果(rowdata['key']=='status\u ok'){
$('#div_id')。附加('');
}          
}
});
见维基


我添加了一个简单的图像,您可以添加一个div容器图像,并使用css设置高度。

听起来应该有一个列来表示包含图标的“状态”或“重要性”(或您希望如何标记它)。不管是否为图标,它仍然是表格数据集的一部分。如果图标必须显示在表外,CSS可以通过更改
td
的显示类型并通过绝对定位移动图标来将其放置在表外。我喜欢它。虽然当我将第一列的显示从“隐藏”更改为“可见”时,行似乎向右移动(即通知/图标显示在jqGrid的第一列,而不是表格的左侧)
var my_jqGrid = $('#id_table').jqGrid({
   ... //Other configs

   afterInsertRow: function(rowid, rowdata, rowelement){

       console.log(rowdata);
       //Here you code condition to insert in other div
       if(rowdata['key']=='status_ok'){
           $('#div_id').append( '<img src="image/ok.png" />'  );
       }          
   }

});