Как передать имя удаленной строки из сетки в jQuery в контроллер (на стороне сервера) с помощью вызова ajax - PullRequest
1 голос
/ 15 июля 2011

Я добавил строку в сетку в функции успеха jQuery, как это (отредактировано с добавлением комментариев Роба и Флейса):

 $(function() {

        $('#MyGrid').delegate('a.remove', 'click', function() {
            alert("del");
           // e.preventDefault();

jQuery.ajax(
        {
            type: "POST",
            url: "Upload/Remove",
            data: "removefile=" + stringhtml// error console shows it as undefined
        });

            $(this).closest('tr').remove();
        });
            $("#uploadForm").ajaxForm({
                iframe: true,
                dataType: "xml",
                url: "Upload/Index",
                success: function(result) {

        ('#MyGrid tbody').append('<tr><td> ' + stringhtml+ ' </td><td><a href="#" 
                class="remove">Remove</a></td></tr>');
              });
    });

вызов ajax не выполняется для удаления клика, но срабатывает после загрузки страницы. Как сделать ajax-вызов для удаления клика с передачей stringhtml? Не могли бы вы, ребята, помочь мне!

Благодарю вас,

MichaelD

Ответы [ 3 ]

3 голосов
/ 15 июля 2011

Привязка к событию клика ссылок для удаления

$('#MyGrid').delegate('a.remove', 'click', function(e){
    e.preventDefault();
    $(this).closest('tr').remove();
});

Измените код добавления строки на

$('#MyGrid tbody').append('<tr><td> ' + stringhtml+ ' </td><td><a href="#" class="remove">Remove</a></td></tr>');
2 голосов
/ 15 июля 2011

Сначала обновите ссылку «Удалить», чтобы она выглядела следующим образом:

<a href="#" onclick="remove(this.parentNode)">Remove</a>

Затем реализуйте функцию remove() следующим образом:

function remove(node) {
    node.parentNode.parentNode.removeChild(node.parentNode);
    //equivalent:  $('#MyGrid tbody')[0].removeChild(node.parentNode);
}

Вот пример: http://jsfiddle.net/nNde4/5/

0 голосов
/ 15 июля 2011

Прежде всего, избегайте использования встроенных атрибутов onclick.Вместо этого используйте $(selector).bind('click', function(e){}); или $(selector).click(function(e){});.В вашем случае, на самом деле использование live() имело бы больше смысла, так как вам не нужно прикреплять каждое событие снова и снова.Поэтому использование следующего должно работать:

$('#MyGrid a').live('click', function(e){
    $(e.target).parent().parent().remove();
});

Также обратите внимание, что вам не нужно вызывать это каждый раз, когда вы добавляете строку.Вызывайте это только один раз, когда таблица создается (при загрузке и т. Д.), И она должна работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...