我怎样才能得到按钮点击上述表格?

问题描述:

这与this question非常相似,但它不适用于我。我也看过thisthis,但仍然无法正常工作。我怎样才能得到按钮点击上述表格?

我需要获取点击按钮上方的表ID。
如果我点击顶部按钮(删除请求div),我会得到表t1的ID。

我的代码如下所示:

<table id="t1"></table> 

<div class="bulk_action"> 
    <div title="Remove requests" class="trash_iconset_grey_16px removeRequest"></div> 
    <div title="some other button" class="abc"></div> 
</div> 

<table id="t2"></table> 

<div class="bulk_action"> 
    <div title="Remove requests" class="trash_iconset_grey_16px removeRequest"></div> 
    <div title="some other button" class="abc"></div> 
</div> 

JS代码

jQuery('.removeRequest').live ('click', function(){ 
    var div_obj = jQuery(this).closest('div'); 
    //alert(jQuery(div_obj).attr('class')); //<-- this works 

    var tbl = jQuery(div_obj).prev('table:first'); // <-- This is not working 
    alert(jQuery(tbl).attr('id')); 
}); 

有没有人对如何解决这个任何提示?

通过将按钮的父母,你可以再问问最接近的表:

jQuery('.removeRequest').live('click', function(){ 
    var div_obj = $(this).parent(); 
    var tbl = div_obj.prev('table'); 
    alert(tbl.attr('id')); 
});​ 

http://jsfiddle.net/XNWsy/1/

+0

像魅力一样工作!感谢队友:) – Steven 2012-03-15 20:05:06

+0

正如我在我的回答中所说的,你不需要在'$()'中附加'div_obj',它已经是一个jquery对象了!请参阅[更新的jsFiddle](http://jsfiddle.net/XNWsy/1/)作为它的工作原理:) – bfavaretto 2012-03-15 20:11:02

+0

已更新的答案以反映此问题... – zen 2012-03-16 17:08:18

查找表时,您不必为div创建新的jQuery对象。它已经是一个jQuery对象。我的意思是,用这个:

var tbl = div_obj.closest('table'); 
alert(tbl.attr('id')); 

您可以简单地使用.prev如果您的标记结构始终是相同的,

DEMO

jQuery('.removeRequest').live ('click', function(){ 
    var div_obj = jQuery(this).closest('div'); 
    alert(jQuery(div_obj).attr('class')); //<-- this works 

    var tbl = jQuery(this).closest('.bulk_action').prev(); // <-- Will get you the table 
    alert(tbl.attr('id')); 
}); 

或者如果标记可能在div之间的一些元素和该表然后使用.closest('table')如下,

DEMO

jQuery('.removeRequest').live ('click', function(){ 
    var div_obj = jQuery(this).closest('div'); 
    //alert(jQuery(div_obj).attr('class')); //<-- this works 

    var tbl = jQuery(this).closest('.bulk_action').prev('table'); // <-- Will get you the table 
    alert(jQuery(tbl).attr('id')); 
}); 

注:使用.on如果你正在使用jQuery 1.7版本或使用.delegate旧版本。

使用.on(jQuery的V1.7)

jQuery(document).on('click', '.removeRequest', function(){ 

使用.delegate(旧版)

jQuery(document).delegate ('.removeRequest', 'click', function(){ 

PS:更换jQuery(document)与包装的DIV和任何包装选择表。

如果我理解正确的话,这可能工作:

jQuery('.removeRequest').live ('click', function(){ 
    var tbl = jQuery(this).closest("table"); 
    alert(jQuery(tbl).attr('id')); 
});