所以我有一个字符串,我正在尝试加入内容;如果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>');
}
})
答案 0 :(得分: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>');
}
答案 1 :(得分: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 = [];
}
});