为什么jquery正则表达式产生了奇怪的结果

时间:2016-08-04 12:04:25

标签: javascript jquery

我尝试使用jquery正则表达式替换文本字符串,而不是将文本乘以4而不是仅替换匹配。

代码:

var $div = $('#container div');
$div.text($div.text().replace(/division/ig, 'div'));
<div id="container">
  <div>this is the first division element</div>
  <div>this is the second division element</div>
  <div>this is the third division element</div>
  <div>this is the fourth division element</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

从我在材料中看到的,这段代码应该可以正常工作。但不知何故,它并没有产生预期的结果。有人可以指出我正确的方向吗?

4 个答案:

答案 0 :(得分:4)

您必须使用循环或回调函数,因为您拥有多个元素。

$('#container div').text(function(i, text) {
    return text.replace(/division/ig, 'div');
});

jQuery.text() documentation.

示例:

&#13;
&#13;
$('#container div').text(function(i, text) {
    return text.replace(/division/ig, 'div');
});
&#13;
<div id="container">
  <div>this is the first division element</div>
  <div>this is the second division element</div>
  <div>this is the third division element</div>
  <div>this is the fourth division element</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您可以使用div循环遍历每个$(...).each元素,如:

var $div = $('#container div');
$div.each(function() {
  var text = $(this).text().replace(/division/ig, 'div');
  $(this).text(text);
});

答案 2 :(得分:-1)

var $div = $('#container div');
$div.each(function(index, value){
  $(this).text($(this).text().replace(/division/ig, 'div'));
});

答案 3 :(得分:-1)

如上所述,您需要遍历已选择的每个元素。你可以在jquery中执行此操作:

sent