2009-05-20 48 views
0

這是一個正在進行的項目,我即將完成。我一直在開發一個基於jQueryt的tablesorter插件的自定義表格分類器。謝天謝地,這只是完成了。我的最後一個問題是這樣的,我有一個表頭如下:將元數據解析器添加到表頭

<th class="blue_bg"><a rel = "Header" href="#" title="Sort column in decending order" class="">Seats Available</a></th> 

我想補充的內嵌元數據解析器禁止在特定的列進行排序。我現在有通過每頭去,沒有一個一流的運行功能,並增加了解析器如下:

//th without a class automatically get sorting disabled 
    $("th[class='']").each(function(){ 
    $(this).addClass("{sorter: false}"); 
}); 

我也有一個通過和搜索無二,它指明列是否應該是一個特定的字符串從排序禁用:

//Add disabling parser to each header with a disable class 
    $("th[class*='csuci.sortable.false']").each(function(){ 
    $(this).removeClass("csuci.sortable.false").addClass("{sorter: false}"); 
}); 

基本上,我想它設置使得,除非用戶另有指定,以默認值或用戶定義的字符串,一個列將已排序禁用。因此,要回顧一下,我排序禁用的列根本沒有類,並有一個類,指定一個禁用字符串。我還想要第三個條件,其中用戶可以在標題中包含任何其他類,在本例中,用戶指定一個類以使該列的背景變爲藍色。但是,我不確定我需要添加禁用解析器到這個示例頭文件的語法。幫助表示感謝,提前感謝。

UPDATE:這是我這增加解析器基於熱點問題研究的中,或者不在,第i個類屬性的全部功能:

$(function(){ 
    //Add disabling parser to each header with a disable class 
    $("th[class*='csuci.sortable.false']").each(function(){ 
     $(this).removeClass("csuci.sortable.false").addClass("{sorter: false}"); 
    }); 

    //th without a class automatically get sorting disabled 
    $("th[class='']").each(function(){ 
     $(this).addClass("{sorter: false}"); 
    }); 

    //Add parser to each table that has a class="csuci.sortable." 
    $("th[class*='csuci.sortable.date']").each(function(){ 
     $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'usLongDate'}"); 
    }); 

    $("th[class*='csuci.sortable.percent']").each(function(){ 
     $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'percent'}"); 
    }); 

    $("th[class*='csuci.sortable.ip']").each(function(){ 
     $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'ip-address'}"); 
    }); 

    $("th[class*='csuci.sortable.url']").each(function(){ 
     $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'url'}"); 
    }); 

    $("th[class*='csuci.sortable.money']").each(function(){ 
     $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'currency'}"); 
    }); 

    $("th[class*='csuci.sortable.time']").each(function(){ 
     $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'time'}"); 
    }); 
}); 

回答

1

那麼,什麼是你要能夠與分揀機的情況下?這聽起來像分揀機啓用的唯一情況是一個直接真正的標誌。您可能只需要使用not

$("th:not([class*='csuci.sortable.true'])").each(function(){ 
    $(this).addClass("{sorter: false}"); 
}); 

如果排序只能由真正的標誌啓用,你需要設置分揀機的所有元素,那麼你可以匹配所有列和使用條件來設置該標誌。

$("th").each(function(){ 
    var sortEnabled = $this.hasClass('csuci.sortable.true'); 
    $(this).addClass("{sorter: "+sortEnabled+"}"); 
}); 
+0

嘿gradbot,真的沒有我添加的特殊布爾類,只是任意字符串,我硬編碼每個遍歷函數尋找。然後它會根據類中的字符串添加排序解析器。 – kingrichard2005 2009-05-20 18:26:32

0

我設法找到解決的辦法,我只是在那個添加禁用解析器每一個表頭開頭加上穿越功能,則每個隨後遍歷刪除禁用解析器,檢查硬編碼串並增加了必要的解析器:

$(function(){ 

    //Add disable parser to all headers 
    $("th").each(function(){ 
     $(this).addClass("{sorter: false}"); 
    }); 

    //Add disable parser to each header with a disable class 
    $("th[class*='csuci.sortable.false']").each(function(){ 
     $(this).removeClass("csuci.sortable.false").addClass("{sorter: false}"); 
    }); 

    //th without a class automatically gets sorting disabled 
    $("th[class='']").each(function(){ 
     $(this).addClass("{sorter: false}"); 
    }); 

    //Add parser to each table that has a class="csuci.sortable.date" 
    $("th[class*='csuci.sortable.date']").each(function(){ 
     $(this).removeClass("{sorter: false}"); 
     $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'usLongDate'}"); 
    }); 
    //Add parser to each table that has a class="csuci.sortable.percent" 
    $("th[class*='csuci.sortable.percent']").each(function(){ 
     $(this).removeClass("{sorter: false}"); 
     $(this).removeClass("csuci.sortable.percent").addClass("{sorter: 'percent'}"); 
    }); 
    //Add parser to each table that has a class="csuci.sortable.ip" 
    $("th[class*='csuci.sortable.ip']").each(function(){ 
     $(this).removeClass("{sorter: false}"); 
     $(this).removeClass("csuci.sortable.ip").addClass("{sorter: 'ip-address'}"); 
    }); 
    //Add parser to each table that has a class="csuci.sortable.url" 
    $("th[class*='csuci.sortable.url']").each(function(){ 
     $(this).removeClass("{sorter: false}"); 
     $(this).removeClass("csuci.sortable.url").addClass("{sorter: 'url'}"); 
    }); 
    //Add parser to each table that has a class="csuci.sortable.money" 
    $("th[class*='csuci.sortable.money']").each(function(){ 
     $(this).removeClass("{sorter: false}"); 
     $(this).removeClass("csuci.sortable.money").addClass("{sorter: 'currency'}"); 
    }); 
    //Add parser to each table that has a class="csuci.sortable.time" 
    $("th[class*='csuci.sortable.time']").each(function(){ 
     $(this).removeClass("{sorter: false}"); 
     $(this).removeClass("csuci.sortable.time").addClass("{sorter: 'time'}"); 
    }); 
}); 

大概沒有做乾淨的方式,但它的作品。感謝StackOverflow的所有成員,他們爲我提供了有關jQuery工作原理的寶貴見解,它確實是一個宏偉的圖書館。