2014-01-31 53 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”)'不能解决问题) –