示例代码:
<table class="grid">
<tr>
<td><a href="#" id="unit_floor_plan_preview">click me </a></td>
<td class="unitNumber"><span>Unit 1</span></td>
<td class="unitStatus">Open</td>
</tr><tr>
<td class="unitNumber"><span>Unit 2</span></td>
<td class="unitStatus">Sold</td>
</tr>
</table>
我能够获得所选行的行索引,以获得精确的列数据。
tr = $('.grid').find('tr');
tr.bind('click', function(event) {
unitNo = $(this).find("td.unitNumber span").html();
alert(unitNo);
});
上面的tr点击事件就可以了。
我现在的问题是,当单击表行内的锚链接
时,如何触发此tr绑定事件?显示地图
目标:首先获得unitno
(在tr.bind click事件上处理),然后再处理锚定链接上的其余代码?
我试图在锚链接click事件中复制tr click函数,但在unitno上得到了未定义的值。查看我的代码:
$('a[id^="unit_floor_plan_preview"]').bind('click',function() {
var tr = $('.grid').find('tr');
unitNo = $(this).find("td.unitNumber span").html();
alert('From link: ' + unitNo);
});
测试代码:http://jsfidle.net/vjkml/29/
更改:
unitNo = tr.find("td.unitNumber span").html();
致:
unitNo = $(this).find("td.unitNumber span").html();
在$('a[id^=“unit_floor_plan_preview”]').bind('click'
中,您试图在$(this)
中找到“td.unitnumber span”
。问题是,this
指的是单击的链接,因此您永远找不到任何东西!
请注意,您可以很容易地将整个语句重写如下:
$(document).on("click", '.grid tr, a[id^="unit_floor_plan_preview"]', function(e) {
e.stopPropagation(); // will prevent double click events from link being clicked within row
var unitNo = $.trim($(this).closest("tr").find(".unitNumber span").text()); // trim to remove end space, closest gets closest parent of selected type
if (e.target.tagName == "A") alert('From link: ' + unitNo);
else alert(unitNo);
});
null
null