这与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'));
});
有没有人有关于如何解决这个问题的任何提示?
答案 0 :(得分:1)
通过转到按钮的父级,您可以询问最近的表格:
jQuery('.removeRequest').live('click', function(){
var div_obj = $(this).parent();
var tbl = div_obj.prev('table');
alert(tbl.attr('id'));
});
答案 1 :(得分:0)
在查找表时,您不必为div构造新的jQuery对象。它已经是一个jQuery对象。我的意思是,使用这个:
var tbl = div_obj.closest('table');
alert(tbl.attr('id'));
答案 2 :(得分:0)
如果您的标记结构始终相同,则可以使用.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'));
});
注意:如果您使用的是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'));
});