2010-01-10 218 views
2

高!

我想要做的是以下几点:我有一个表连接到位于偶数行表中的链接的onclick。每一行都是隐藏的。点击该链接时,会显示奇数行并将数据加载到该行中。工作正常

现在我想要做的是,无论何时该过程完成,我想附加一个新的点击功能,使该行再次隐藏的链接。有点像切换,但随着一些更只是显示/隐藏功能。我试图用下面的代码做到这一点,但无法让它工作。我肯定会错过一些非常基本的东西,或者只是不太了解jquery(这很可能,因为我刚刚开始几周前)。

$(document).ready(function(){ 

    // The version icons 
    $("a.version").click(function() { 
     var sLink = $(this).attr("href"); 
     var nexttr = $(this).parent().parent().next("tr.version"); 
     var nexttrtd = nexttr.find("td:first"); 
     $.get(sLink, function(sData){ 
      nexttrtd.html(sData); 
      nexttr.show(); 
     }); 

     $(this).click(function(){ 
      attachHideMyChildren(); 
     }); 

     return false; 
    }); 
}); 

function attachShowMyChildren() 
{ 
    var sLink = $(this).attr("href"); 
    var nexttr = $(this).parent().parent().next("tr.version"); 
    var nexttrtd = nexttr.find("td:first"); 
    $.get(sLink, function(sData){ 
     nexttrtd.html(sData); 
     nexttr.show(); 
    }); 
    $(this).click(function(){ 
     attachHideMyChildren(); 
    }); 
    return false; 
} 

function attachHideMyChildren() 
{ 
    $(this).parent().parent().next("tr.version").hide(); 
    $(this).click(function(){ 
     attachShowMyChildren(); 
    }); 
} 

它打开表格行,插入数据然后再附加函数关闭行。我怎么能得到这个发生?

任何想法?

回答

5

问题是这样的:

$(this).click(function(){ 
    attachHideMyChildren(); 
}); 

当你调用方式this成为window功能。相反,这样做:

$(this).click(attachHideMyChildren); 

另外,您要添加click()处理程序不删除旧的。

这就是说,有一个更简单的方法来做到这一点。

$("a.version").click(function() { 
    var next = $(this).closest("tr").next(); 
    if (next.is(":hidden")) { 
    $.get($(this).attr("href"), function(sData) { 
     next.find("td:first").html(sData); 
     next.show(); 
    }); 
    } else { 
    next.hide(); 
    } 
    return false; 
}); 

应该这样做。

+0

圣洁的废话!它做到了。谢谢cletus。 – 2010-01-10 12:03:27