2013-03-23 45 views
0

我使用DataTable腳本輕鬆地從我的數據庫中抽取數據進行排序,並使用其內置的功能,使顯示/隱藏某些列DataTable的顯示/隱藏功能:更改鏈接文本時使用

 function fnShowHide(iCol) { 
     var oTable = $('#inventory').dataTable(); 
     var bVis = oTable.fnSettings().aoColumns[iCol].bVisible; 
     oTable.fnSetColumnVis(iCol, bVis ? false : true); 
    } 
<a href="javascript:void(0);" class="cost" onclick="fnShowHide(10);">Cost</a> 

問題是,我如何做到這一點,如果列隱藏,鏈接文本顯示「顯示成本」,如果列可見,說它「隱藏成本」?

回答

1

也許這會工作。看起來您正在將列索引分配給onclick屬性,可能會將一個id添加到要用作訪問者的錨;是這樣的:

function fnShowHide(iCol) { 
     var oTable = $('#inventory').dataTable(); 
     var bVis = oTable.fnSettings().aoColumns[iCol].bVisible; 
     oTable.fnSetColumnVis(iCol, bVis ? false : true); 

     //--anchor text modifier 
     var $anchor = $('#anchor_' + iCol); 
     var albl = $anchor.text(); 
     if(albl.indexOf('Show')!=-1 || albl.indexOf('Hide')!=-1){ 
      albl = (bVis)? albl.replace('Show', 'Hide') : albl.replace('Hide', 'Show'); 
     }else{ 
      albl = (bVis)? 'Hide ' + albl : 'Show ' + albl; 
     } 
     $anchor.text(albl) 
    } 
<a href="javascript:void(0);" class="cost" 
id="anchor_10" onclick="fnShowHide(10);">Cost</a> 

我在我的語法有錯誤:變化應用到下面的行應該一代產量您正在尋找的結果:

if(albl.indexOf('Show')!=-1 || albl.indexOf('Hide')!=-1){ 
/*this is affected line*/ albl = (bVis)? albl.replace('Show', 'Hide') : albl.replace('Hide', 'Show'); 
    }else{ 
+0

它確實改變文本「隱藏」,但如果我再次點擊它,它不會切換到「顯示」 – 2013-03-23 03:29:05

+0

bVis是否返回布爾值?如果不是,那可能是問題。如果你還沒有,我會建議嘗試使用螢火蟲,而console.dir([bVis,albl]);在觸發時顯示數值。 – bphillips 2013-03-23 16:00:48