2014-01-31 129 views
0

我有一個情況在我有一個表,裏面詳細列具有複選框的選擇組件複選框詳細視圖

我期望的行爲是

1)當我點擊詳細信息行圖像上的行應展開顯示其父行的詳細信息,但不應選中複選框,並且必須刪除父行的背景色 - 正常工作

2)當細節行被打開,我點擊複選框時,複選框應該被選中,並且父行的背景顏色應該改變工作正常

3)當細節行是開放的,如果我執行摺疊細節行的複選框狀態應該保持,因爲它是與父行的背景顏色必須保持相同的做工精細複選框被選中。

所有上述情況下正常工作,當我選擇第一行

問題是

當我選擇第二行第一行checkox狀態被保留,但父行的背景色被刪除。 我正在使用 $(row).siblings(「selected」)。addClass(「selected」);

爲了留住這在以前選擇

兄弟行的背景顏色,但它並不如預期工作,請幫助

感謝

**framework**.table.prototype._details_link_renderer = function(cell_value, is_detail_open) 
{ 
    var details_img_url = this._properties.details_open_img_url; 
    if(is_detail_open) 
    { 
    details_img_url = this._properties.details_close_img_url; 
    } 
    var img = $(document.createElement("img")).attr("src", details_img_url).addClass("open_close_img"); 
    var link = $(document.createElement("a")).attr("href", "#noAnchor").attr("title", rdx.i18n.get_string("rdx.table_show_hide_title")).append(img).bind(rdx.events.CLICK, {ns_table: this}, function(event) { 
     var row=$(this).parents("tr:eq(0)"); 
     var rowInd =$(this).parents("tr:eq(0)").index()/2; 
     //var rowcount=$(row).index()+1; 
     $(row).siblings(".selected").addClass("selected"); 
     event.data.ns_table._toggle_details_row($(this).parents("tr:eq(0)").index()/2); 

     if(!$(event.data.ns_table._select_checkbox_array[rowInd]).is(':checked')) 
     { 
     $(row).toggleClass("selected"); 
     } 
     if ($(event.data.ns_table._select_checkbox_array[rowInd]).is(':checked')) 
     { 
     $(row).addClass("selected") ; 
     //$(row).siblings(".selected").addClass("selected"); 
     } 
     event.stopPropagation(); 
    }); 

我有我自己的定義框架

+2

你有一個JSfiddle或一個現場的例子? – Dijon

+0

這是一個生動的例子。 –

+0

'$(row).siblings(「selected」)'返回任何東西嗎?不應該是'$(row).siblings(「。selected」)'?另外,您可以告訴我們代碼中發生了什麼,例如在[JSFiddle](http://jsfiddle.net/)? –

回答

0

首先,$(row).siblings(".selected").addClass("selected");可以被刪除,因爲它什麼都不做:它選擇$(row)的兄弟姐妹,其class屬性包含selected.addClass("selected");只會增加類,如果它不在那裏

因此,您在event.stopPropagation();之前有兩個if陳述。

/* If the checkbox is checked, add class="selected", otherwise remove it. */ 
if($(event.data.ns_table._select_checkbox_array[rowInd]).is(':checked')) { 
    $(row).addClass("selected") ; 
} 
else { 
    $(row).removeClass("selected"); 
} 

這是否給你你以後:據我所看到的,他們可以通過更簡單的if/else被取代?

+0

目前即時通訊不尋找代碼清理,我需要解決我的問題,這並沒有幫助:( –

+0

行,你可以把你的代碼放在[JSFiddle](http://jsfiddle.net/)(即使它是隻是嘲弄HTML和CSS),所以我們可以看看它嗎?很難回答你的問題,但不能看到發生了什麼。 (順便說一句,我沒有提供代碼清理 - 只是解釋爲什麼'( 「.selected」)。addClass(「selected」)'不能解決問題) –