使用JQuery更改Flexigrid中的列颜色

时间:2013-08-29 19:22:28

标签: jquery css flexigrid

我正在使用 FlexiGrid ,并希望根据变量值更改列颜色。

请告诉我如何实现它?我可以在colModel中使用任何属性吗?

我尝试了这个,但它不起作用,它抱怨它无法支持 changeColumn

$('#Flexigrid1').changeColumn('FirstName');
var result = false;

        (function($) {

            function changeColumn(columnName) {
                if (!result) {
                    $('table tr').each(function() {
                        $(this).find('td').eq(column).css('background-color', 'red');
                    });
                }
            }
        })(jQuery);

1 个答案:

答案 0 :(得分:1)

首先需要使用您的函数扩展jQuery库。例如:

jQuery.fn.extend({
  changeColumn: function(columnName) {

但是,您的代码仍然存在其他一些问题。例如,您似乎没有在该命名空间中指定变量result,而您的选择器$('table tr')正在查看整个DOM中的所有表行。

我不建议你在最后的尝试中这样做,但是为了教你一点关于jQuery扩展我已经编写了下面的示例代码:

// Create the changeColumnColor function
jQuery.fn.extend({

    changeColumnColor: function (color) {
        $(this).css('background-color', color);
    }
});


$(document).ready(function () {

    // Make the table a flexigrid
    $('#testTable').flexigrid();

    // Call your custom function
    $('#testTable td.firstName').changeColumnColor('red');
});

JSFiddle:http://jsfiddle.net/markwylde/Jk6ew/

但是,我仍然会建议您使用任何现有功能扩展实际的flexigrid插件本身,或使用更简单的单线程解决方案:

$('#testTable td.firstName').css('background-color', 'red');

或者,如果您不能提供您的表类并且不知道该列的内容:

$('#testTable td:first-child').changeColumnColor('red');

$('#testTable td:nth-child(3)').changeColumnColor('red');

如果颜色是静态的,另一种选择是更改CSS。

除了下面的评论,您还可以执行以下操作,这将与flexigrid当前标准/命名约定保持一致。

(function($) {
    $.fn.flexChangeColumnColor = function (tableHeader) {
        // Get the column index we're changing
        idx = ($(this).parents(".flexigrid:eq(0)").find("th").filter( function() {
               return $(this).text() === tableHeader;
           }).index());

        // Make the changes
        $('td:nth-child(' + (idx+1) + ')', this).css('background-color', 'red');
    }
})(jQuery);


$(document).ready(function () {

    $('#testTable').flexigrid();

    $('#testTable').flexChangeColumnColor('Test Col 3');

});

HTML略有变化以证明所以请查看更新: JSFiddle:http://jsfiddle.net/markwylde/Jk6ew/1/