如何点击按钮获取上表?

时间:2012-03-15 19:36:37

标签: jquery

这与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'));
});

有没有人有关于如何解决这个问题的任何提示?

4 个答案:

答案 0 :(得分:1)

通过转到按钮的父级,您可以询问最近的表格:

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/

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

如果您的标记结构始终相同,则可以使用.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'));
});

注意:如果您使用的是jQuery 1.7版,请使用.on;对于旧版本,请使用.delegate

使用.on(对于jQuery v1.7)

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

使用.delegate(旧版本)

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

PS:jQuery(document)替换为包装div和表格的任何包装选择器。

答案 3 :(得分:0)

如果我理解正确,这可能会有效:

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