2012-05-02 6 views
0

内のすべてのtdのに私はこれを持っています。 imgCancelはテーブルの内側にあり、作成しているすべてのテーブルにimgCancelがあります。jqueryの、キーワードから「この」テーブル

私はこのような二行を置き換えるために考えられてきました:

$(document).on("click","#imgCancel",function(){ 
    $(this).closest('table').find('td').click(function(){ 
     editTables("#tbl_zones td",this) 
    }) 
}) 

それはしかし、動作しませんでした、また、私が何を参照する必要がありeditTables(の最初の引数として置く見当がつかない現在のテーブルのすべてのtdに)。

編集: はjknaackのjsfiddleの変更、私はこれで終わった:

$(document).on("click","#imgCancel",function(){ 
    var tblID = $(this).closest('table').attr('id') 
    $("#"+tblID+" td").click(function(){ 
     editTables("#"+tblID+" td",this) 
    }) 
}) 
+1

IDは一意です。つまり、ページ内の1つの要素だけがID「imgCancel」を持つことができます。 –

+0

テーブルのクラスを追加する場合は、テーブルクラスを追加してimgCancelとjqueryを使用してください。 – riso

+0

Vega:ページ内に一度に複数のテーブルは存在しません。 – aanders77

答えて

0

問題は、idは、ドキュメント内で一意である代わりに、クラス属性を使用しなければならないということです。

w3c id属性はHTML要素の一意のIDを指定します(id属性の値はHTML文書内で一意でなければなりません)。

+0

多分私の質問は少し不明でした。ある時点では、ドキュメントには1つのテーブルしか存在しません。私はテーブル内のtd内のimgCancel(this)から、同じテーブル内のすべてのtdのクリックイベントを設定する方法を知る必要があります。 – aanders77

+1

これはうまくいくはずです。 http://jsfiddle.net/dhPsP/1/ – dknaack

0

ただ、 "これは" 関数呼び出しの要素がクリックされたTDだろう

$(document).on("click","#tbl_zones td", function(){ 
    editTables(this); 
}); 

(仮定は、それはtd要素が含まれている)内部IDを使用します。

0

私が正しくあなたを得たら、データ属性としてクリック可能な要素の中に新しいセレクターを渡すところがあります。

HTMLがどのように表示されるかを知るのは難しいので、例を作成しました。もちろん、クリックされた要素の内側またはクローゼットでのみセレクタをカスタマイズするようにカスタマイズすることもできます。

JSコード:

$(document).on("click",".actionbuttons",function(){ 
    var selectedElements = $($(this).data("selector")); 
    selectedElements.css("background","#FF0000"); 
    $(selectedElements).click(function(){ 
     $(this).css("background","#00FF00"); 
    }) 
})​ 

HTML例:

<img class="actionbuttons" src="/" data-selector=".test1"/> 
<div class="test1"></div> 
<div class="test1"></div> 
<div class="test1"></div> 
<img class="actionbuttons" src="/" data-selector=".test2"/> 

<div class="test2"></div> 
<div class="test2"></div> 
​ 

http://jsfiddle.net/Ft7SB/

関連する問題