динамически создаваемое событие щелчка ссылки срабатывает, но функция удаления не дает желаемого эффекта

0

Привет, я играю с gridview и функцией автозаполнения jqueryui. Я добавляю строки в gridview динамически после нажатия элемента на возвращаемом элементе автозаполнения, вот код:

$("#<%=txtSearch.ClientID %>").autocomplete({
                source: function (request, response) {
                    $.ajax({
                        url: '<%=ResolveUrl("~/web.asmx/hello")%>',
                        data: "{ 'prefix': '" + request.term + "'}",
                        dataType: "json",
                        type: "POST",
                        contentType: "application/json; charset=utf-8",
                        success: function (data) {
                            response($.map(data.d, function (item) {
                                return {
                                    label: item.split('-')[0],
                                    val: item.split('-')[1]
                                }
                            }))
                        },
                        error: function (response) {
                            alert(response.responseText);
                        },
                        failure: function (response) {
                            alert(response.responseText);
                        }
                    });
                },


                select: function (e, i) {
                    //$("#<%=hfCustomerId.ClientID %>").val(i.item.val);

                    var row;

                        var totalRows = $("#<%=GridView1.ClientID()%> tr").length;

                        if (totalRows <= 1) {
                            $('#GridView1 tbody tr:first').after('<tr><td></td><td></td><td></td></tr>');
                        }

                        if (row == null) {
                            row = $("[id*=GridView1] tr:last-child").clone(true);
                        }

                        $("[id*=GridView1] tr").not($("[id*=GridView1] tr:first-child")).remove();
                        $("td", row).eq(0).html(i.item.val);
                        $("td", row).eq(1).html(i.item.label);
                        $("td", row).eq(2).html('<a href=# class=delbutton id=' + i.item.val + '>' + 'DELETE' + '</a>');
                        $("[id*=GridView1]").append(row);


                    }

                },
                minLength: 1
            });

и вот моя функция удаления:

$('#GridView1').on('click' , '.delbutton' , function (){
                var record_id = $(this).attr("id");
                var tr_id = $(this).parents(".record");

                if (confirm('remove?')) {
                    tr_id.css("background-color", "lightgreen");
                    // Do some animation effect

                    tr_id.fadeOut(500, function () {

                        //Remove GridView row

                        tr_id.remove();


                    });
                } else {
                    alert('canceled');
                }
            });

функция удаления работает хорошо, но когда первые строки удаляются, а il добавляет новое, нажимая на возвращаемые данные автозаполнения, функция удаления по-прежнему работает, но фактическое удаление строки не работает

Что я делаю не так?

любое предложение было бы очень полезно

Спасибо

  • 0
    я думаю, потому что ваша первая строка уже имеет добавленный класс «запись», но когда вы добавляете строки динамически, вы пропускаете класс «запись». Новые строки не будут выбраны, потому что вы выбираете строку для удаления с помощью $ (". Record"). Вам нужно будет исправить селектор, который вызывается для захвата переменной tr_id.
  • 0
    Вы прибили это большое спасибо за быстрый ответ Вы должны опубликовать ответ, чтобы я мог голосовать за
Теги:
gridview

1 ответ

0
Лучший ответ

моя догадка состоит в том, что в вашей первой строке уже добавлен класс "запись", но когда вы динамически добавляете строки, вы оставляете класс "запись".

Новые строки не будут удалены, потому что вы выбираете строку для удаления с помощью $ (". Record").

Вам нужно будет исправить селектор, который вызывается для захвата переменной tr_id.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню