如何通过jQuery替换匹配元素中的文本?

时间:2014-11-20 18:36:05

标签: javascript jquery

HTML:

<span class="point">8,0</span>
<span class="point">8,0</span>
<span class="point">10,0</span>
<span class="point">8,0</span>

如果点数为10,0,我想要删除,0。:

 <span class="point">10</span>

我被警告了长度但不起作用。

    $('.point').each(function () {
        if ($('.point').text().length > 4) {
            alert("ok");
        }
    });

这一切都得到了警觉。

我的问题是什么?我该如何解决?


&#13;
&#13;
$('.point').each(function () {
  if ($('.point').text().length > 4) {
    alert("ok");
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="point">8,0</span>
<span class="point">8,0</span>
<span class="point">10,0</span>
<span class="point">8,0</span>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:1)

这取决于是否只有10 ...

$('.point').each(function () {
     var textAfterComma = $(this).text().split(",");
     if (textAfterComma[0] === '10' && textAfterComma[1] === '0') {
         $(this).text(textAfterComma[0]);
     }

 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="point">8,0</span>
<span class="point">8,0</span>
<span class="point">10,0</span>
<span class="point">8,0</span>

使用JSFiddle:http://jsfiddle.net/bc6jmtt2/1/

如果你想要所有以0结尾的数字只是第一个数字,那么......

$('.point').each(function () {
     var textAfterComma = $(this).text().split(",");
     if (textAfterComma[1] === '0') {
         $(this).text(textAfterComma[0]);
     }

 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="point">8,0</span>
<span class="point">8,0</span>
<span class="point">10,0</span>
<span class="point">8,0</span>

使用JSFiddle:http://jsfiddle.net/bc6jmtt2/

对于您在问题底部的示例,有两个修复:

首先$('.point')$(this)然后if ($(this).text().length > 4) {if ($(this).text().length >= 4) {> 3,因为您的所有字符串都不是> 4

$('.point').each(function () {
  if ($(this).text().length >= 4) {
    alert("ok");
  }
});

使用JSFiddle:http://jsfiddle.net/bc6jmtt2/3/

答案 1 :(得分:1)

由于$('.point').text()所有元素中的文字与类.point的串联,因此您应该使用$(this).text()

此外,您的条件应为>=4==== "10,0

这是一个更好的方法:

$('.point:contains("10,0")').text('10');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="point">8,0</span>
<span class="point">8,0</span>
<span class="point">10,0</span>
<span class="point">8,0</span>

答案 2 :(得分:0)

请改用$(this).text()。使用$(".point").text()会导致点类的所有文本的连接,如:8,0 8,0 10,0 8,0 所以:

&#13;
&#13;
$('.point').each(function () {
  if ($(this).text().length > 3) {
    alert("OK");
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="point">8,0</span>
<span class="point">8,0</span>
<span class="point">10,0</span>
<span class="point">8,0</span>
&#13;
&#13;
&#13;