3

私はこの小さなことで問題を抱えています。次のようなコードがあります。

<table>.........
    <td>
        <span class="editable" id="name"><?= $name ?></span>
        <img class="edit_field" src="icons/edit.png"/>
    </td>
....... 
</table>

スパンの ID を取得して、それを変更できるようにしたい (たとえば、入力ボックスを追加する)。

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

$('.edit_field').live('click', function() {
    var td = $(this).parent();
    var span = td.find(".editable");
    alert(span.id)
});

しかし、それは機能していません...何かアイデアはありますか? (再利用できるように、このようにしようとしています)

4

3 に答える 3

2

これを試してくださいhttp://jsfiddle.net/VPvSD/

$('table').on('click', '.edit_field', function() {
    var td = $(this).parent();
    var span = $(this).prev('span');
    alert(span.attr("id"));
});
于 2012-07-18T17:16:04.160 に答える
2

live()は廃止されたため、使用しないでください。.on()デリゲート イベント処理のために jQuery 1.7+ で使用します。

$('table tbody').on('click', '.edit_field', function() {
    var img = $(this) ;
    var td = img.parent();   // parent td ( if needed )
    var span = img.prev('span');  // previous span ( a jQuery object )
    alert( span.attr('id') ); // or span[0].id,here span[0] will gives an element
});

.edit_field動的に生成されない場合は、次を使用します。

$('.edit_field').on('click', function() {
    var img = $(this) ;
    var td = img.parent();   // parent td ( if needed 
    var span = img.prev('span');  // previous span ( a jQuery object )
    alert( span.attr('id') ); // or span[0].id,here span[0] will gives an element
});

ノート

id複数の要素に同じを使用しないでください。span私は、あなたが各行に持っていると仮定しますid=name。その場合は、class代わりに を使用しidます。

于 2012-07-18T17:11:34.957 に答える
1

これを試してください:

  $('.edit_field').bind('click', function() {
   var td_id = $(this).parents('td').attr('id');
   alert(td_id);
  });

class ではなく ID を使用する方が良いでしょう:

  $('#name').bind('click', function() {
   var td_id = $(this).parents('td').attr('id');
   alert(td_id);
  });

それにいくつかの html コンテンツを追加する必要がある場合は、次のようにします。

  $('.edit_field').bind('click', function() {
   var added_html = "<input type='text' />";
   var td_id = $(this).parents('td').attr('id');
   $('#'+td_id).html(added_html);
   alert(td_id);
  });

この場合、live の代わりに bind または on を使用することをお勧めします。

于 2012-07-18T17:14:13.260 に答える