как получить доступ к свойству результата функции успеха jquery - PullRequest
1 голос
/ 19 июля 2011

У меня есть success функция jQuery, определенная как:

success: function(result) {
    var htmlString = [result];
    for (i = 0; i < htmlString.length; i++) {
        $('#MyGrid tbody').append('<tr><td><a href="#">' + htmlString[i].name+ '</a></td><td><a href="#" class="remove">Remove</a></td></tr>');
    }
},

И обработчик событий, связанный с delegate:

$('#MyGrid').delegate('a.remove', 'click', function() {
    var name= ;$(this).closest('tr').find("td").eq(0).find('a').text();
    var number = ; //here i need to access htmlString[i].number
    alert(number);
}

Как мне назначить htmlString[i].numberв переменную number?

Ответы [ 2 ]

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

Это похоже на идеальный вариант использования для .data():

/*snip */
for (i = 0; i < htmlString.length; i++) {
    var $row = $('<tr><td><a href="#">' + htmlString[i].name + '</a></td><td><a href="#" class="remove">Remove</a></td></tr>');
    $row.find("a.remove").data("number", htmlString[i].number);

    $('#MyGrid tbody').append($row);
}

Тогда в вашем обработчике событий:

$('#MyGrid').delegate('a.remove', 'click', function() {  
    var number = $(this).data("number");
    alert(number);
});

Вот рабочий пример:http://jsfiddle.net/BRZD7/

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

могут быть и более эффективные способы, но одним из способов является обратный вызов success, присваивающий result некоторой переменной глобальной области видимости и доступ к нему в вызове делегата

, иначе вы можете сделать это таким образом, назначивот htmlString[i].number до rel тега

success: function(result) {

                var htmlString = [result];
                for (i = 0; i < htmlString.length; i++) {

                $('#MyGrid tbody').append('<tr><td><a rel="'+htmlString[i].number+'" href="#">' + htmlString[i].name+ '</a></td><td><a href="#" class="remove">Remove</a></td></tr>');
                }

            },

и при вызове делегата

     $('#MyGrid').delegate('a.remove', 'click', function() {

                var name= $(this).closest('tr').find("td").eq(0).find('a').text();
                var number =  $('#MyGrid').delegate('a.remove', 'click', function() {

                var name= $(this).closest('tr').find("td").eq(0).find('a').text();
                var number = $(this).closest('tr').find("td").eq(0).find('a').attr('rel');
                alert(number);
    }
            alert(number);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...