Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   селектор точного вхождения текста (https://javascript.ru/forum/jquery/51607-selektor-tochnogo-vkhozhdeniya-teksta.html)

ufaclub 12.11.2014 14:27

селектор точного вхождения текста
 
есть код на странице

<span class="price">101 200 <span class="currency">руб</span></span>
<span class="price">0 <span class="currency">руб</span></span>
<span class="price">500 100 <span class="currency">руб</span></span>
<span class="price">10 899 <span class="currency">руб</span></span>
<span class="price">23 200 <span class="currency">руб</span></span>
<span class="price">13 213 <span class="currency">руб</span></span>


мне нужно как то через jquery поменять текст

<span class="price">0 <span class="currency">руб</span></span>


на

<span class="price">По<span class="currency">согласованию</span></span>



Вот таким селектором получилось выделить то что нужно

span.price:contains("0") span.currency'

но JQ выделяет не только там где 0 руб. но и там где 0 присутствует. например селектор сработает на 100 399 руб. и на 10 рублей.

А мне нужно чтобы он срабатывал только на 0 руб.

Помогите пожалуйста

Aetae 12.11.2014 14:39

Только contains'ом это не сделаешь, надо в ручную фильтровать:
<span class="price">101 200 <span class="currency">руб</span></span>
<span class="price">0 <span class="currency">руб</span></span>
<span class="price">500 100 <span class="currency">руб</span></span>
<span class="price">10 899 <span class="currency">руб</span></span>
<span class="price">23 200 <span class="currency">руб</span></span>
<span class="price">13 213 <span class="currency">руб</span></span>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script>
  $('span.price').filter( function(){
    return this.innerHTML.charAt(0) == '0'
  }).css('color','red')
</script>

рони 12.11.2014 14:53

ufaclub,
а почему не на сервере?
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
 .price{
    display: block;
  }
  span {
     cursor: pointer;
  }
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
     $(function(){
      $('span.price').filter(function(index){
    return this.firstChild.data == '0 ';
  }).html('По<span class="currency"> согласованию</span>')
});
  </script>
</head>

<body>
<span class="price">101 200 <span class="currency">руб</span></span>
<span class="price">0 <span class="currency">руб</span></span>
<span class="price">500 100 <span class="currency">руб</span></span>
<span class="price">10 899 <span class="currency">руб</span></span>
<span class="price">23 200 <span class="currency">руб</span></span>
<span class="price">13 213 <span class="currency">руб</span></span>

</body>

</html>

ufaclub 12.11.2014 15:16

Не на сервере потому что придется много где внедрять, а тут заменил для пользователя и все готово, спасибо кстати за помощь.

Aetae 12.11.2014 15:24

рони, firstChild может и не быть, потому я решил не рисковать.)
А вообще, если не выёбываться со скоростью и прочей "маловажной" фигнёй, то так:
<span class="price">101 200 <span class="currency">руб</span></span>
<span class="price">0 <span class="currency">руб</span></span>
<span class="price">500 100 <span class="currency">руб</span></span>
<span class="price">10 899 <span class="currency">руб</span></span>
<span class="price">23 200 <span class="currency">руб</span></span>
<span class="price">13 213 <span class="currency">руб</span></span>
 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script>
  $('span.price').filter( function(){
    return $(this).text() == '0 руб'
  }).css('color','red')
</script>


Часовой пояс GMT +3, время: 20:06.