【发布时间】:2013-04-04 13:40:53
【问题描述】:
我在我的 KendoUI Grid 上实现了一个右键弹出菜单。
问题是,它很慢。
当您右键单击时,脚本需要获取被单击行的 ID。我正在这样做:
salesGrid.on('mouseup', '[role="row"]', function(e){
button = e.which ;
if(button == 3)
{
$(this).bind("contextmenu",function(e){
return false
});
var id = null ;
id = $('td', this).find('.id-span').data('id') // ~500ms
我也试过了:
id = $(this).children('td').children('.id-span').data('id') ;
还有:
id = $('td:first span', this).data('id') ;
所有这些都需要大约 500 毫秒的时间来执行,这在用户体验方面太长了。
这是它正在遍历的表:
<tr data-uid="16e14dc2-a2fa-4979-a1ff-cd5113223aa6" role="row">
<td role="gridcell"><span class="id-span" data-id="1">A</span></td>
<td role="gridcell">3</td>
<td role="gridcell">Lenze</td>
<td role="gridcell"><span class="popoverintel" data-trigger="hover" data-placement="bottom" data-part-id="1">33.8202-E</span></td>
<td role="gridcell">Supply</td>
<td role="gridcell">New</td>
<td role="gridcell">3</td>
<td role="gridcell">€</td>
<td role="gridcell">575.00</td>
<td role="gridcell">1725.00</td>
</tr>
有没有办法让它更快?
【问题讨论】:
-
这里的
this是什么,是表格、行、单元格还是单元格内的内容 -
试试
$('.id-span', $(this).closest('tr')).data('id') -
@Arun P Johny 我已经添加了上下文。
-
$(this).children().first().children().first().data("id")怎么样? -
$('.id-span', $(this).closest('tr')).data('id') 速度一样 :(
标签: javascript jquery dom jquery-selectors dom-traversal