使用& # 39;这个# 39;查找表头中的最后一行
Using 'this' to find the final row in a table header
我使用stupidtable (http://joequery.github.io/Stupid-Table-Plugin/)添加排序表。我使用回调来添加适当的向上或向下箭头,以显示用于排序的列以及它是升序还是降序。
原始事件处理程序使用代码:
table.bind('aftertablesort', function (event, data) {
// data.column - the index of the column sorted after a click
// data.direction - the sorting direction (either asc or desc)
var th = $(this).find("th");
th.find(".arrow").remove();
var arrow = data.direction === "asc" ? "↑" : "↓";
th.eq(data.column).append('<span class="arrow">' + arrow +'</span>');
});
这在只有一行标题的情况下工作得很好,但是如果有多行,它就不能,因为它发现第一行标题而不是最后一行。
我正在努力找出如何找到底部一行,以下另一个线程我尝试:
var th = $(this + ' thead tr:last').find("th");
但是这给出了一个语法错误,我猜是因为我没有正确使用'this'。有人能帮忙吗?
谢谢,
篮
你不能把一个对象和一个字符串组合在一起来构建一个选择器。试试这个:
var th = $(this).find('thead tr:last').find("th");
this
不是字符串,而是一个DOM元素。
你可以像这样使用它作为上下文选择器:
var th = $('thead tr:last', this).find("th");
但是.find
比上下文更快,所以使用这个:
var th = $(this).find("thead tr:last th");
如果this
引用你的表,你应该使用find
var th = $(this).find('thead tr:last')
下一行
$(this + ' thead tr:last')
将不起作用,因为this
是一个对象,而您正在与字符串混合,这将导致
$("[object HTMLTableElement] thead tr:last")
您知道thead
是用于表的标题部分。当问"bottom row"时你确定它是header还是body?
查找this
为父节点的最后一行。
var last_header_row = $(this).find("thead").last("tr");
如果this
是父节点,则在body中查找最后一行。
var last_body_row = $(this).find("tbody").last("tr");
注意,this
引用是在事件回调函数的上下文中。如果不知道上下文是什么,我们就不能保证它是一个DOM元素引用。
如果你有一个来自表内的引用,其中this
是tr
或其他东西。将对find(..)
的调用替换为closest(..)
相关文章:
- 动态插入的表:JQuery未检测到最后一行
- 谷歌地图-数据库中的标记只显示最后一行的信息
- 使用VBScript或Javascript从文本框(文本区域)中删除最后一行空/空行
- 设置AngularJS控制器属性不能是使用Coffeescript的最后一行
- 在每个固定高度段落的最后一行添加省略号,并隐藏溢出 y
- 在表格最后一行(链接)中显示菜单,并在单击菜单项时显示模式窗口
- 如果最后一行已经显示,如何防止jQuery加载更多停止函数
- for循环,直到xml属性不为null.从最后一行开始javascript
- 仅通过最后一行运行Google脚本
- 替换Div.中的最后一行
- 删除表中的最后一行时显示警报窗口
- 使用setAttribute将id设置为元素最后一行的td
- 除去最后一行以外的所有尾部空白
- 将数据表的所有行(最后一行除外)的光标更改为指针
- Javascript定期获取mysql的最后一行
- 删除表的最后一行,除非它是使用 jquery 的唯一行
- 仅获取具体化选择中的最后一行
- 单击“单击”jqgrid“多选缺少最后一行
- 是否可以将光标锁定/聚焦到文本区域的最后一行
- 确保追加的行始终是表中由动态创建的行组成的最后一行..detach().