2016-11-13 59 views
1

我有一個表,每個行上有雙擊事件。當我雙擊任何一行時,它將顯示另一行「.matching」。除此之外,如果顯示一個隱藏的「匹配」行,我也想創建一個列rowspan。下面顯示我的PHP部分:使用jquery的列rowspan

<table> 
<tr ondblclick="rowdoubleclick(this);"> 
    <td>...</td> 
    <td>...</td> 
    <td class="lastcolumn">Rowspan is here</td> 
</tr> 
<tr class="matching" style="display:hidden;"> 
    <td colspan="2">Hidden row shows here</td> 
</tr> 
</table> 

,這是我的jquery:

function rowdoubleclick(e) { 
    var tablerow = $(e).closest('tr'); 
    var rowammend = $('.lastcolumn'); 
    var matching = $(e).closest('tr').next('tr.matching'); 

    if(matching.is(":hidden")) { 
     tablerow.attr('rowspan','2').css({'border-bottom':'transparent'}); 
     matching.slideToggle("fast"); 
     rowammend.attr('rowspan','2'); 
    } 
    else { 
     tablerow.css({'border-bottom':'1px solid #939393'}); 
     matching.hide(); 
     rowammend.attr('rowspan','1'); 
    } 
} 

這段代碼的問題,當我雙擊任何行,它創建於另一行的行跨度。或換句話說,它會爲表中的所有行創建所有的rowspan。 如何將特定列rowspan添加到該特定的雙擊行事件?

回答

1

試試這個,你應該找到lastcolumn點擊行

function rowdoubleclick(e) { 
    var tablerow = $(e).closest('tr'); 
    // here you should find from clicked row and not from each row 
    var rowammend = $(e).find('.lastcolumn'); 
    var matching = $(e).closest('tr').next('tr.matching'); 

    if(matching.is(":hidden")) { 
     tablerow.attr('rowspan','2').css({'border-bottom':'transparent'}); 
     matching.slideToggle("fast"); 
     rowammend.attr('rowspan','2'); 
    } 
    else { 
     tablerow.css({'border-bottom':'1px solid #939393'}); 
     matching.hide(); 
     rowammend.attr('rowspan','1'); 
    } 
}