0

私のページのremoveButtonクラスのすべてのボタンに、2つのdivを削除する関数を追加したいと思います。例: 最初のボタン関数は ID "Region0Div" の div を削除し、2 番目のボタン関数は ID "Region1Div" などの div を削除します。削除ボタンは AjaxFileUpload コントロールによって動的に生成され、ID で見つけることができません。繰り返しのようなことを試しましたが、機能がクラスのすべてのボタンに同時に割り当てられているため、機能しません。

$(document).change(function () {
            $(".removeButton").click(function () {
                $("#Region" + itr + "Div").remove();
                $("#Comment" + itr + "Div").remove();
                itr = itr + 1;
            });
        });

編集:

それぞれ試してみましたが、まだ機能せず、すべてのボタンに Region0Div の削除を割り当てています。

var itr = 0;

        $(document).change(function () {

            $(".removeButton").each(function () {
                console.log(itr);
                $(this).click(function () {

                    $("#Region" + itr + "Div").remove();
                    $("#Comment" + itr + "Div").remove();
                    itr = itr + 1;
                });
            });
        });

itr = itr + 1 をクリック関数の外側に配置すると、各関数でも機能しません。

4

5 に答える 5

2

何かが起こったときにイベント ハンドラーを割り当てるべきではありません。一般的なルールは、ページに存在する要素にイベント ハンドラーを割り当てて、次のように委任することです。

次のようなボタンがあるとします。

<button class="removeButton" data-div1="d1" data-div2="d2">Remove</button>
<div id="d1"></div>
<div id="d2"></div>

そしてJSは次のようになります:

$('body').on('click', '.removeButton', function () {
    var btn = $(this), id1 = btn.data('div1'), id2 = btn.data('div2');
    $('#' + id1).remove();
    $('#' + id2).remove();
});

このようにすると、次のようになります。

  • ボタンと同じ数ではなく、1 つのイベント リスナーのみを割り当てます。
  • 毎回ループする必要はありません。
  • ボタンをリロードするたびにハンドラーを更新する必要はありません。
于 2013-10-23T09:54:04.660 に答える
0

これを試して

$(".removeButton").on("click", function(i){
    $("#Region" + i + "Div").remove();
    $("#Comment" + i + "Div").remove();
 });

これがあなたを助けることを願っています

于 2013-10-23T10:12:35.493 に答える
0

使用する場合

$(".removeButton").each()

それらをループして、一度に 1 つずつ変更を加えることができます。

JQuery Each()

于 2013-10-23T09:51:14.467 に答える
0

属性 Starts With Selector [name^="value"]を使用してみることができます

$("[id^=Region]" ).remove();

each()または、正確に作成するために使用できますid

$("[id^=Region]").each(function(index, value){
    $("#Region" + index + "Div").remove();
})
于 2013-10-23T09:53:25.327 に答える
0

こんにちは、以下のコードで十分です..

$(".removeButton").each(function (i) {
                $("#Region" + i + "Div").remove();
                $("#Comment" + i + "Div").remove();

            });
于 2013-10-23T09:53:29.490 に答える