得到一个可疑的div的某一行(即第一个)并替换它

时间:2016-12-28 02:31:13

标签: javascript contenteditable

使用textarea非常简单:

<textarea id='elememt'>
  1. Blah blah blah.
  <div>2. Header</div>
  3
</textarea>

var lines = $('textarea').val().split('\n');

alert(lines[0]; // show the first line "1. Blah blah blah."
alert(lines[2]; // show the third line "3"

但是我如何对一个满足的DIV做同样的事情?

我看过这个:

var first_line = $("#element")
                       .contents()
                       .filter(function() { 
                           return !!$.trim( this.innerHTML || this.data ); 
                       })
                       .first();

哪个获得第一行但我如何获得第三行等等?

1 个答案:

答案 0 :(得分:0)

您可以使用.html()String.prototype.match()RegExp /.*\n/g匹配一个或多个字符,包括换行符String.prototype.replace()Array.prototype.map()Array.prototype.join()返回原始匹配,在匹配行的选定索引处替换字符串或部分字符串。

在问题中给定html.match()返回的数组中的第一个元素将是换行符;使用3匹配返回数组的第四个元素。

&#13;
&#13;
$().ready(function() {
  var element = $("#element");
  var matches = element.html().match(/.*\n/g);
  console.log(matches);
  var third_line = matches[3];
  var replacement = "4";
  element.html(function(i, html) {
    return matches.map(function(_html, index) {
     return index != 3 ? _html : _html.replace(/3/, replacement)
   }).join("")
  });
  console.log(element.html());
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">  
</script>
<div id='element'>
  1. Blah blah blah.
  <div>2. Header</div>
  3
</div>
&#13;
&#13;
&#13;