我将jQuery的success
函数定义为:
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
变量?
答案 0 :(得分:0)
可能有更好的方法,但是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);
}
答案 1 :(得分:0)
这似乎是.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/