0

私はjqueryデータテーブルを持っており、そのデータテーブルには各行に行の詳細を表示できる列があります。datatables 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
            }
});

1 つの詳細が既に表示されているときに別の「ビュー」をクリックすると、現在の div 内に新しい div が追加され、同じ新しい div がコンテンツ本文に追加されます。違う。何か案は?

4

2 に答える 2

0

要素がすでに存在するかどうかを知るには、親要素でjqueryの検索を使用して、子を探します...次のようになります。

if($('#parent_container').find('#child_element').length>0){
     //element(s) exists
}else{
     //element(s) not found
}
于 2012-10-29T04:49:13.577 に答える
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 に答える