0

我有一个 jquery 数据表,在该数据表中,每一行都有一个列,可让您查看该行的详细信息。我不需要数据表 row_details 的东西。

这个想法是,一旦单击“视图”,文本就会变为隐藏,并且带有 row_### 的 div 将附加到内容正文中。然后,如果在显示该行时单击相同的按钮,它将隐藏它。此外,如果有人单击另一行的视图,则前一行文本应该变回隐藏,div 隐藏,并且应该显示刚刚单击的行。

这是我到目前为止所拥有的:

$("a[class^=view]").click(function() {
    var id = $(this).attr('class').match(/\d{1,}/);

    if( $("div[id^=report_]").size() >= 1) {
     // Slide up, remove
             // Change text back to view    
    } else {
             // Append and change text to Hide
            }
});

如果我在已经显示一个细节的情况下单击另一个“视图”,它会在当前 div 中添加一个新 div 并将相同的新 div 附加到内容主体.. 显然不是我正在寻找的效果,所以我的逻辑是错误的。有任何想法吗?

4

2 回答 2

0

知道了。有点乱,但它的工作原理。如果有其他方法感兴趣。这是解决方案:

$("a[class^=view]").click(function() {
    var id = $(this).attr('class').match(/\d+/);

    if($(this).text() == "Hide") {
        $(this).text("View");
        $("#report").html(null);
    } else {
        $("a[class^=view_]").each(function(){$(this).text("View");});
        $(this).text("Hide");
        $("#report").html("<div id='report_"+id+"'>viewing report "+id+"</div>").slideDown();
    }
});
于 2012-10-28T23:43:50.180 回答
0

要知道一个元素是否已经存在,我在父元素上使用 jquery 的 find ,寻找他的孩子......像这样:

if($('#parent_container').find('#child_element').length>0){
     //element(s) exists
}else{
     //element(s) not found
}
于 2012-10-29T04:49:13.577 回答