Jquery不允许我添加$(this).html();

时间:2014-04-09 19:59:26

标签: javascript jquery

我希望比我聪明的人能想出来,我觉得我真的很亲密......

请在此处查看: http://jsfiddle.net/9rjW3/4/

这是我添加的Jquery

$('tr:gt(0)').each(function () {

    $(this).find('td:eq(2)').html(function () {

        if($('span').height() > 18)
            return $(this).html().replace('@','\n@');
        else
            return 'this';

    })

})

它有效,但唯一的问题是我还没有弄清楚如何改变这个"这个"到细胞的价值...

当我尝试更改

return 'this';

return $(this).html();

它不起作用,有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您不需要$(this).html,您已经可以直接使用。

$('tr:gt(0)').each(function () {    
    $(this).find('td:eq(2)').html(function (index, html) {    
        if($('span').height() > 18) {
            return html.replace('@', '<br />@');
        } else {
            return html;
        }
    });
});

\n之前正确添加@,您可以在调试控制台中看到它。您可能想要添加<br />

更新

您在某个高度之后进行换行的逻辑不起作用,因为除非您专门设置表格单元格的宽度,否则文本将永远不会换入表格单元格。您必须始终附加中断,或者为该列设置一个宽度。

答案 1 :(得分:1)

我个人建议:

$('tr + tr td:nth-child(3) span').html(function(i,h){
    return $(this).height() > 18 ? h.replace(/@/g, '\n@') : h;
});

JS Fiddle demo