提问者:小点点

jquery触发器表行单击事件


示例代码:

<table class="grid">
    <tr>
        <td><a href="#" id="unit_floor_plan_preview">click me &nbsp;</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/


共1个答案

匿名用户

更改:

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