0

クリックするたびにこの行を挿入する「追加」ボタンがあります。各行には、[編集]および[削除]ボタンがあります。

//html
<tr class="insertedRow">
    <td><input type="hidden" class="name" /></td>
    <td><input type="hidden" class="age" /></td>
    <td>
        <input type="button" class="edit" class="btn" value="Edit" />
        <input type="button" class="delete" value="Delete" />
    </td>
</tr>

削除したい対応する行を削除するこのjQueryがあります。しかし、「編集」をクリックしたときに、対応する行の「名前」と「年齢」を選択する方法がわかりません。現在のコードは、常に最初に挿入された行を対象としています。何か案は?ありがとう。

どういうわけか「編集」ボタンのparent.parentを選択してから、「名前」と「年齢」のIDをターゲットにする必要があると思います。

//jQuery
$(".delete").live('click',function() {
    $(this).parent().parent().remove();
});

$(".edit").live('click',function() {
    $('.name').clone().attr('type','text').insertAfter('.name').prev().remove();
    $('.age').clone().attr('type','text').insertAfter('.age').prev().remove();
});
4

5 に答える 5

0

最初にIDをクラスに変換します。

<td><input type="hidden" class="name" /></td>
<td><input type="hidden" class="age" /></td>

それから :

$("#edit").live('click',function() { $name =
   var name =  $(this).closest(".insertedRow").find(".name");
   var age =  $(this).closest(".insertedRow").find(".age");

   name.clone().attr('type','text').insertAfter(name).prev().remove();
   age.clone().attr('type','text').insertAfter(age).prev().remove();
});
于 2012-10-18T16:17:23.163 に答える
0

idIDを変更しない限り、属性を持つ要素のクローンを作成することはできません。

これを読んで、毎回最初の要素が得られる理由を理解してください。

于 2012-10-18T16:18:20.380 に答える
0

重複を避けるためidに、あなたはこのようなことをすることができます

var lastid = $('[id^="clonedInput"]').length + 1;
$(".clonedInput").last().clone().attr('id', 'clonedInput' + lastid).appendTo("body")

または使用する.class

于 2012-10-18T16:21:41.770 に答える
0

値は次のとおりです。

$(this).parent().find(".name").text();
$(this).parent().find(".age").text();

および編集機能:

$(".edit").live('click',function() {
    $('.name').clone().attr('type','text').insertAfter('.name').value($(this).parent().find(".name").text()).prev().remove();
    $('.age').clone().attr('type','text').insertAfter('.age').value($(this).parent().find(".age").text()).prev().remove();
});
于 2012-10-18T16:24:18.973 に答える
0

たとえば、クリックイベントハンドラーは「#name」という名前のIDをターゲットにしていますが、行のクローンを作成すると、同じIDを持つ複数の要素が確実に作成されます。

また、jQueryのドキュメントでは、タイプattrの変更が禁止されていることがかなり明確になっています:http: //api.jquery.com/attr/

注:jQueryはor要素のtype属性を変更することを禁止しており、すべてのブラウザーでエラーをスローします。これは、InternetExplorerではtype属性を変更できないためです。

また、他の人が指摘しているように、.live()は非推奨であるため(不確定な将来に廃止されることを意味します)、おそらく使用すべきではありません...サポートされている方向であるため、.on()の使用を検討する必要があります。

于 2012-10-18T16:25:58.600 に答える