添加留下HTML标记的空格

时间:2013-02-01 14:07:21

标签: javascript jquery text

我有一个字符串,我想检查它是否有长于或等于15个字符的单词。如果是这样,用空格将该单词拆分为5个字符,然后返回带有拆分字的相同字符串。

我的代码有效,但问题是我的字符串也可能包含HTML标记,我不想触摸它们。

function space_that(_e){

    var w = [];
    var t = $(_e).text();

    w = t.split(" ");

    for(var s in w)
        if(w[s].length >= 15)
            w[s] = w[s].substr(0,10) + " ";

    $(_e).text(w.join(" "));

    return true;

}

1 个答案:

答案 0 :(得分:1)

只需检查该部分是否以<开头,然后它就是HTML标记。

function space_that(_e){

    var w = [];
    var t = $(_e).text();

    w = t.split(" ");

    for(var s in w) {
        if(w[s].length >= 15 
           && w[s].substring(0, 1) != "<" 
           && w[s].substring(w[s].length-1, 1) != ">")
            w[s] = w[s].substr(0,10) + " ";
    }

    $(_e).text(w.join(" "));

    return true;

}

编辑:更正错误(旧答案仅影响html标签)并添加了对开始和结束标签的检查。

以下版本适用于内部有空格的标签。

function space_that(_e){

    var w = [];
    var t = $(_e).text();

    w = t.split(" ");
    var inTag = false;

    for(var s in w) {
        if(w[s].substring(0, 1) == "<") inTag = true;
        if(w[s].substring(w[s].length-1, 1) == ">") inTag = false;
        if(inTag) continue;
        if(w[s].length >= 15 
           && w[s].substring(w[s].length-1, 1) != ">")
            w[s] = w[s].substr(0,10) + " ";
    }

    $(_e).text(w.join(" "));

    return true;

}