Jquery выбрать только часть div - PullRequest
2 голосов
/ 27 апреля 2011

Извините, если это основной вопрос, но я застрял. Я пытаюсь изменить цену в следующем коде:

<body>
 <div id="price">
   <span class="title"> price</span>
 $30
 </div>   
</body> 

Я пробовал это:

<script type="text/javascript">
    $('#price').text('$31');
</script>

но, конечно, он удаляет промежуток. Я попробовал несколько комбинаций с .not, но ничего не работает. К сожалению, я не могу добавить класс к цене, которая облегчит мою жизнь. Кто-нибудь знает, как это сделать?

Ответы [ 4 ]

3 голосов
/ 27 апреля 2011

contents() возвращает все дочерние элементы, включая текстовые узлы.Тогда вы просто получите только текстовые узлы с filter() и вуаля.

$('#price').contents().filter(function (index) {
    return this.nodeType == 3 && index == 2; // both conditions to make sure it's the correct node
}).replaceWith(' $31');
1 голос
/ 27 апреля 2011

Как насчет использования замены RegExp, например:

var $price = $('#price'),
    priceHTML = $price.html(),
    newPrice = '$31';

$price.html(priceHTML.replace(/\$\d+/, newPrice));

См. Пример & # x2192;

0 голосов
/ 27 апреля 2011

Попробуйте отформатировать ваш HTML следующим образом:

<div id="priceContainer">
  <span class="title">price</span>
  <span id="price">$30</span>
</div>   

И jQuery, какой он есть на самом деле:

<script type="text/javascript">
    $("#price").text("$31");
</script>
0 голосов
/ 27 апреля 2011

Добавьте метку или интервал около $ 30, а затем измените это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...