我怎样才能得到按钮点击上述表格?
问题描述:
这与this question非常相似,但它不适用于我。我也看过this和this,但仍然无法正常工作。我怎样才能得到按钮点击上述表格?
我需要获取点击按钮上方的表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'));
});
答
查找表时,您不必为div创建新的jQuery对象。它已经是一个jQuery对象。我的意思是,用这个:
var tbl = div_obj.closest('table');
alert(tbl.attr('id'));
答
您可以简单地使用.prev
如果您的标记结构始终是相同的,
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')
如下,
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'));
});
像魅力一样工作!感谢队友:) – Steven 2012-03-15 20:05:06
正如我在我的回答中所说的,你不需要在'$()'中附加'div_obj',它已经是一个jquery对象了!请参阅[更新的jsFiddle](http://jsfiddle.net/XNWsy/1/)作为它的工作原理:) – bfavaretto 2012-03-15 20:11:02
已更新的答案以反映此问题... – zen 2012-03-16 17:08:18