我正在使用jQuery,我的目标是获取下一个表的id。我将在这里简化代码:
简化的HTML如下所示:
<div>
<img src="png.png" class="exportIcon" alt='' onClick="tableExport()">
<table class="table tablesorter" id="tableHourlyT"><tr><td></td></tr></table>
</div>
然后我有以下功能:
<script>
function tableExport(){
tableID = $(this).next('table').attr("id");
alert(tableID);
}
</script>
但警报说“未定义”,实际上我甚至无法对表做任何事情,我试图隐藏它等等。它只是找不到它。我还尝试用next()
替换closest()
,但我仍然有相同的结果。我需要做的是总是在调用函数时,从该元素中获取最接近的下表的id(单击图像/按钮)。
答案 0 :(得分:3)
这是做你想做的事的一种方法 - 将元素作为参数传递给tableExport函数:
<div>
<img src="png.png" class="exportIcon" alt='' onClick="tableExport(this)">
<table class="table tablesorter" id="tableHourlyT"><tr><td></td></tr></table>
</div>
然后,在jQuery选择器中使用它:
<script>
function tableExport(element){
tableID = $(element).next('table').attr("id");
alert(tableID);
}
</script>
答案 1 :(得分:0)
你不应该使用onClick属性,而是使用jQuery事件处理程序:
$(&#34; .exportIcon&#34;)。单击(TABLEEXPORT); //只要单击导出图标,就将tableExport绑定为处理程序 function tableExport(){...}当你以这种方式绑定事件时,你会发现$(this)被正确设置为被点击的元素。
http://www.codeply.com/go/y6OAZFRZSn
(我用一个用于演示的按钮替换了你的img,但它的工作原理相同。)
答案 2 :(得分:0)
也可以使用:
var tableID = $(element).next('table').attr("id");
代替:
tableID = $(element).next('table').attr("id");
不带var前缀的变量将在全局范围中定义