jquery - CSS 规则不适用于从 jquery 附加的元素

标签 jquery html css

我已经搜索过类似的问题,但没有人回答我的问题。 (所有这些问题似乎都与拼写错误有关)

我做这个只是为了好玩。我正在使用基于 json 数据的 jquery 创建一个表。问题是,附加的表格行不继承任何 CSS 规则。我觉得我以前读过有关此问题的原因,特别是表格,但我没有找到这些信息。

HTML:

            <table width="100%" class="" id="mytable">
                <thead>
                </thead>
                <tbody>
                <tr><td>f</td><td></td><td></td><td></td></tr>
                <tr><td>b</td><td></td><td></td><td></td></tr>
                <tr><td>a</td><td></td><td></td><td></td></tr>
                </tbody>
            </table>

CSS:

    tr:nth-child(even){background:blue}
    tr:nth-child(odd){background:green}

JS:

        // Build some test data
        var data = [];
        var cols = ['Col-A','Col-B','Col-C','Col-D'];
        for (i=0;i<10;i++){
            data.push(['A_'+i,'B_'+i,'C_'+i,'D_'+i]);
        }
        // data that would be sent to 
        var json = JSON.stringify({columns:cols, data:data});


        // build the table
        $('#mytable').tables(json);


    });


    // the magic function
    jQuery.fn.tables = function(json) {
        var obj = JSON.parse(json);
        var head = this.find('thead');
        var bod  = this.find('tbody');

        // Build columns
        head.append('<tr>');
        for (i=0;i<obj.columns.length;i++){
            head.append('<th>'+obj.columns[i]+'</th>');

        }
        head.append('</tr>');

        // Add row data
        for (i=0;i<obj.data.length;i++){
            bod.append('<tr>');
            for(j=0;j<obj.data[i].length;j++){
                bod.append('<td>'+obj.data[i][j]+'</td>');
            }
            bod.append('</tr>');    
        }

        return this;
    }

最佳答案

使用此代码,您不会一次追加一整行,而只会追加片段。您希望呈现什么?

head.append('<tr>');
...
head.append('</tr>');

要让它工作,你的魔法函数应该是这样的:

    // the magic function
    jQuery.fn.tables = function(json) {
        var obj = JSON.parse(json);
        var head = this.find('thead');
        var bod  = this.find('tbody');



        // Build columns
        var row = '<tr>';
        for (i=0;i<obj.columns.length;i++){
            row += '<th>'+obj.columns[i]+'</th>';
        }
        row += '</tr>';

        head.append(row); // append the full row

        // Add row data
        row = '';
        for (i=0;i<obj.data.length;i++){
            row += '<tr>';
            for(j=0;j<obj.data[i].length;j++){
                row += '<td>'+obj.data[i][j]+'</td>';
            }
            row += '</tr>';
        }

        bod.append(row); // append the full row

        return this;
    }

一次追加一整行的函数。

关于jquery - CSS 规则不适用于从 jquery 附加的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58983159/

相关文章:

css - Xamarin.Forms - 像 CSS 一样的嵌套样式继承?

html - 列和内联元素,垂直对齐错误

javascript - 用jquery生成表

javascript - 如何通过 jQuery 检查 div 类是否存在三次或更多次?

asp.net - CSS文件中的div.classname

javascript - 如何改进我的脚本不显示带有用户名字段的密码字段

javascript - 我的网络应用程序用户如何单击按钮来播放本地存储的 mp3 文件?

javascript - 在高度小于另一个 div 时显示 div 中的 li 元素

Javascript 变量出现在控制台中但未定义

asp.net - 如何使用标签正确对齐网页上的文本框