【问题标题】:jQuery - elegant way to trim() all elements in a doc?jQuery - 修剪()文档中所有元素的优雅方式?
【发布时间】:2013-03-25 15:54:01
【问题描述】:

清理自动生成的 html 带来更多乐趣。大量无关的空间注入标签:

<span>Lorem Ipsum   </span> dolor sit...(  代表实际空间,而不是实体)

jQuery 提供了一个 $.trim() 来截断字符串末尾的空格。有没有一种快速而优雅的方法可以将其应用于 each() 循环以从所有内联标签中删除所有空格,还是我注定要选择 => 获取 html => 修剪 => 替换 html?

【问题讨论】:

    标签: jquery trim


    【解决方案1】:

    下面的代码将删除任何没有子元素的节点周围的空白

    $('span').filter(function() {
        return $(this).children().length === 0;
    }).text(function(_, old) {
        return $.trim(old);
    });
    

    对子元素的测试可确保您不会错误地修改任何带有嵌套标签的元素,尽管它可能会给您留下比您想要的更多的空间。

    http://jsfiddle.net/alnitak/c7aT6/

    【讨论】:

    • 这不会像<span> a <b>moose</b></span> 这样清理节点
    • 确实不会,但我认为这种情况没有任何完美的解决方案。
    • 即使它只删除了所有实例的一半,它也节省了我数小时的时间来手动完成其余的工作。
    【解决方案2】:

    阅读docs

    $(selector).html(function(i, old){
        return $.trim(old);
    });
    

    Fiddle

    【讨论】:

    • 对整个 DOM 进行序列化然后反序列化绝不是正确的答案。它有可能破坏这些元素上的任何事件处理程序或其他数据。
    • 他只是要求一种更优雅的方式来做,我不赞同它
    • 将其作为答案提交隐式认可。
    • 我只是假设如果他想清理自动生成的 HTML,它还没有附加任何 javascript 处理程序。我也不喜欢在客户端 JavaScript 中遍历大型 DOM 树的每个节点的想法。
    猜你喜欢
    • 1970-01-01
    • 2011-08-06
    • 2010-10-12
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    相关资源
    最近更新 更多