0

所以我有一个字符串,我正在尝试加入内容;如果 val 长度小于 10 个字符,则将其与下一个值连接。但是当我尝试这段代码时,它会加入相同的 val 而不是下一个。

//Set the regex.
myregex = /(<p>.*?<\/p>)/g;
//Variable string.
content =  Example: <p>Hello</p><p>This is my test content</p><p>etc</p>

$(content.match(myregex)).each(function (key, val) {
    var test = $(val).text();
    if (test.length < 10) {
        var n = val.concat(val);
        $('#mydiv').append('<div>' + n + '</div>');
    } else {
        $('#mydiv').append('<div>' + val + '</div>');
    }
})
4

2 回答 2

1

这里的这一行: val.concat(val),确实是在复制您的内容。您需要做的是从当前值regex而不是当前值中获取下一个值。像下面这样的东西应该可以工作。

var matches = content.match(myregex),
    myDiv = $('#mydiv');

for (var i = 0, len = matches.length; i < len; i++){
    if (i + 1 < len && matches[i].length < 10){
        myDiv.append('<div>' + matches[i].concat(matches[i+1]) + '</div>');
        i += 1;
    }
    else myDiv.append('<div>' + matches[i] + '</div>');
}
于 2013-03-22T00:34:28.313 回答
0

val并且val是相同的东西,所以当然val.concat(val)会复制它。

如果你想使用$.each,我认为加入之前的值可能会更好,因为你还不知道下一个值是什么。

var previous = [];
$(content.match(myregex)).each(function (key, val) {
    var test = $(val).text();
    if (test.length < 10) {
        previous = val;
    } else {
        if(previous.length) {
            val = previous.concat(val);
        }
        $('#mydiv').append('<div>' + val + '</div>');
        previous = [];
    }
});
于 2013-03-22T00:32:50.457 回答