0

私はこれを持っています:

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

複数のテーブルで機能するように、関数をより汎用的にしようとしています。imgCancelはテーブル内にあり、作成しているすべてのテーブルにimgCancelがあります。

私はこのように2行目を置き換えることを検討しました:

$(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)
    })
})
4

3 に答える 3

0

問題は、IDがドキュメント内で一意である必要があることです。代わりに、class属性を使用してください。

w3c id属性は、HTML要素の一意のIDを指定します(id属性値はHTMLドキュメント内で一意である必要があります)。

于 2012-05-02T18:25:42.130 に答える
0

内部IDを使用するだけです(td要素が含まれていると仮定します)

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

関数呼び出しの「this」は、クリックされたtd要素になります。

于 2012-05-02T18:33:05.920 に答える
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/

于 2012-05-02T18:51:44.773 に答える