首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

高分求解!jquery为表格自动添加class,该如何解决

2012-03-09 
高分求解!jquery为表格自动添加class表格一开始时没有任何class的,想通过jquery添加.有以下要求:1.为所有

高分求解!jquery为表格自动添加class
表格一开始时没有任何class的,想通过jquery添加.有以下要求:
1.为所有加上class,实现迭代计数,如果到下一个节点,重新计数。(tr为row1 th和td为col1)
2.tbody偶数行加上alt
3.若为第一或最后一项,则加上first/last
  若只有一项,则first last
4.注意一个页面有可能有多个table

生成的样例如下:

HTML code
<!DOCTYPE html><head>    <script type="text/javascript" src="jquery.js"></script>    <script type="text/javascript">        //    </script></head><body><table>        <thead>            <tr>                <th class="col0 first">A</th>                <th class="col1">B</th>                <th class="col2">C</th>                <th class="col3">D</th>                <th class="col4 last">E</th>            </tr>        </thead>        <tbody>            <tr class="row0 first">                <td class="col0 first">A</td>                <td class="col1">B</td>                <td class="col2">C</td>                <td class="col3">D</td>                <td class="col4 last">E</td>            </tr>            <tr class="row1 alt">                <td class="col0 first">A</td>                <td class="col1">B</td>                <td class="col2">C</td>                <td class="col3">D</td>                <td class="col4 last">E</td>            </tr>            <tr class="row2">                <td class="col0 first">A</td>                <td class="col1">B</td>                <td class="col2">C</td>                <td class="col3">D</td>                <td class="col4 last">E</td>            </tr>            <tr class="row3 last alt">                <td class="col0 first">A</td>                <td class="col1">B</td>                <td class="col2">C</td>                <td class="col3">D</td>                <td class="col4 last">E</td>            </tr>        </tbody>        <tfoot>            <tr class="row0 first">                <td class="col0 first">A</td>                <td class="col1">B</td>                <td class="col2">C</td>                <td class="col3">D</td>                <td class="col4 last">E</td>            </tr>        </tfoot>    </table>        <table>        <thead>            <tr>                <th class="col0 first">A</th>                <th class="col1">B</th>                <th class="col2">C</th>                <th class="col3">D</th>                <th class="col4 last">E</th>            </tr>        </thead>        <tbody>            <tr class="row0 first">                <td class="col0 first last">A</td>                <td class="col1">B</td>                <td class="col2">C</td>                <td class="col3">D</td>                <td class="col4 last">E</td>            </tr>        </tbody>        <tfoot>            <tr class="row0 first">                <td class="col0 first">A</td>                <td class="col1">B</td>                <td class="col2">C</td>                <td class="col3">D</td>                <td class="col4 last">E</td>            </tr>        </tfoot>    </table></body> 



[解决办法]
//试试这个。
JScript code
<script type="text/javascript">        $(function () {            var fn_handle = function ($jq) {                $jq.first().addClass('first').end().last().addClass('last').end().each(function (i) {                    $(this).addClass('row' + i + ((i + 1) % 2 == 0 ? ' alt' : '')).find('td').first().addClass('first').end().last().addClass('last').end().each(function (i) {                        $(this).addClass('col' + i);                    });                });            }            $('table').each(function () {                //处理thead                $(this).find('thead th').first().addClass('first').end().last().addClass('last').end().each(function (i) {                    $(this).addClass('col' + i);                });                //处理tbody                fn_handle($(this).find('tbody tr'));                //处理tfoot                fn_handle($(this).find('tfoot tr'));            });        });    </script>
[解决办法]
那是因为你在样例里面就这样写
HTML code
 <tbody>            <tr class="row0 first">                <td class="col0 first last">A</td>                <td class="col1">B</td>                <td class="col2">C</td>                <td class="col3">D</td>                <td class="col4 last">E</td>            </tr>        </tbody>
[解决办法]
1.修改"tfooter"为"tfoot";
2.选择器使用:first-child

JScript code
$('#btnBuild').click(function () {$('table').each(function () {    var i = 0;    $(this).find('thead th').each(function () {        $(this).addClass('col' + i);        i++;    });    $(this).find('thead th:first-child').addClass('first');    $(this).find('thead th:last-child').addClass('last');    i = 0;    $(this).find('tbody tr').each(function () {        $(this).addClass('row' + i.toString() + ((i % 2 === 1) ? ' alt' : ''));        i++;        var j = 0;        $(this).find('td').each(function () {            $(this).addClass('col' + j);            j++;        });        $(this).find('td:first-child').addClass('first');        $(this).find('td:last-child').addClass('last');    });    $(this).find('tbody tr:first-child').addClass('first');    $(this).find('tbody tr:last-child').addClass('last');    i = 0;    $(this).find('tfoot tr').each(function () {        $(this).addClass('row' + i + i % 2 ? ' alt' : '');        var j = 0;        $(this).find('td').each(function () {            $(this).addClass('col' + i);            j++;        });        $(this).find('td:first-child').addClass('first');        $(this).find('td:last-child').addClass('last');    });    $(this).find('tfoot tr:first-child').addClass('first');    $(this).find('tfoot tr:last-child').addClass('last');});
[解决办法]
JScript code
jQuery(function(){    jQuery("table[class^=tableStyle]").each(function(){                var $thead=jQuery(this).children("thead");        if($thead!=null){        //will udpate to th                    var $thead_tr=$thead.children("tr");            if($thead_tr.length>1){                $thead.children("tr").each(function(index){                        jQuery(this).addClass("row"+index);                        jQuery(this).children("th").each(function(index){                            jQuery(this).addClass("col"+index);                    }).first().addClass("first").end().last().addClass("last");                }).first().addClass("first").end().last().addClass("last");            }else{                $thead.children("tr").each(function(){                        jQuery(this).children("th").each(function(index){                            jQuery(this).addClass("col"+index);                    }).first().addClass("first").end().last().addClass("last");                });            }                        if(jQuery(this).hasClass("sortable")){                $thead.children("tr").last().addClass("sortableRow");            }                    }                        var $tbody=jQuery(this).children("tbody");            if($tbody!=null){                $tbody.children("tr").each(function(index){                    jQuery(this).addClass("row"+index);                    jQuery(this).children("td").each(function(col_index){                        jQuery(this).addClass("col"+col_index);                                            }).first().addClass("first").end().last().addClass("last");                                        if(index%2==1){                            //even                            jQuery(this).addClass("alt");                        }                }).first().addClass("first").end().last().addClass("last");            }                                    //tfoot            var $tfoot=jQuery(this).children("tfoot");            if($tfoot!=null){            //will udpate to th            $tfoot.children("tr").each(function(){                    jQuery(this).children("td").each(function(index){                        jQuery(this).addClass("col"+index);                }).first().addClass("first").end().last().addClass("last");            });        }                });}); 

热点排行