我知道之前已经问过这个问题,但我似乎遇到的问题与之前提出的问题不同。我有一个表,我希望每一行都有一个删除链接,淡出表行,然后从DOM中删除表行。我的第一个问题是我无法获得jQuery fadeOut效果来处理表行,并发现你必须在行的td元素上调用fadeOut。所以,这是我的jJavascript:
$('span.deleteItem').live('click', function() {
$(this).closest('tr').find('td').fadeOut('fast',
function(){
$(this).parents('tr:first').remove();
});
return false;
});
span元素位于td内部,因此我在单击时找到最接近的tr元素,然后在每个td元素上放置fadeOut函数。这很有效。
问题是在回调函数中,'this'实际上是引用窗口元素而不是隐藏的单个td元素。根据我的理解,'this'应该引用淡出的元素。
有什么想法吗?
答案 0 :(得分:14)
抓住“this”引用并传递它:
$('span.deleteItem').live('click', function() {
var here = this;
$(this).closest('tr').find('td').fadeOut('fast',
function(here){
$(here).parents('tr:first').remove();
});
return false;
});
答案 1 :(得分:5)
我认为这就是你要找的东西:
$('span.deleteItem').live('click', function() {
var tableRow = $(this).closest('tr');
tableRow.find('td').fadeOut('fast',
function(){
tableRow.remove();
}
);
});
编辑:我认为Opatut is right,如jsFiddle中所示。