2012-03-15 6 views
1

これは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')); 
}); 

誰もがこれを解決する方法上の任意のヒントを持っていますか?

答えて

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/

+0

チャームのように働いた!ありがとうございます:) – Steven

+0

私の答えで言ったように、あなたは '$()'に 'div_obj'を囲む必要はありません、それはすでにjqueryオブジェクトです!それが動作するという証拠として[updated jsFiddle](http://jsfiddle.net/XNWsy/1/)を参照してください:) – bfavaretto

+0

これを反映する答えを更新しました... – zen

0

テーブルを検索するときに、divの新しいjQueryオブジェクトを作成する必要はありません。これはすでにjQueryオブジェクトです。私はこの使用し、意味:あなたのマークアップ構造は常に同じである場合は、単純に、

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の間にいくつかの要素を持っている可能性がある場合を.prevを使用することができます

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

をし、テーブルは次に.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を使用している場合。 DIVをラップする任意のラッパー・セレクタとjQuery(document)を交換し、:

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

PS(古いバージョンの).delegateの使用(jQueryのV1.7用)

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

.onを使用

テーブル。

0

私が正しくあなたを理解していれば、これはうまくいくかもしれない:

jQuery('.removeRequest').live ('click', function(){ 
    var tbl = jQuery(this).closest("table"); 
    alert(jQuery(tbl).attr('id')); 
}); 
関連する問題