Jquery: выберите класс и вставьте «.attr (***)» во все тот же класс - PullRequest
0 голосов
/ 02 ноября 2011
var str = $('.rating').html();
$.trim(str);
$('.rating').prepend.attr('class', 'rating-' + str.replace(/\s/g, ""));

<div class="rating">1</div>
<div class="rating">2</div>
<div class="rating">3</div>

Change to this:
<div class="rating-1">1</div>
<div class="rating-2">2</div>
<div class="rating-3">3</div>

Как .prepend работает с .attr?Кажется, я не могу найти какую-либо информацию о append и attr.

Все, что я хочу сделать, это выбрать класс и заменить его на class-1, class-2, class-3 и т. Д.

Ответы [ 3 ]

1 голос
/ 02 ноября 2011

Это то, что вы хотите?

Поскольку вы меняете атрибут

attr('class'

Я думаю, вам следует использовать removeClass и addClass

var cnt = 1; 
$('.rating').each(function(){
    $(this).removeClass("rating");
    $(this).addClass("rating-" + cnt);
    cnt = ctn + 1;

});

Я думаю, что это будетсделайте это, чтобы рейтинг каждого класса был заменен на rating-n, где n будет увеличиваться на 1 каждый раз, когда вы меняете класс

0 голосов
/ 02 ноября 2011

prepend и append работают с элементами DOM, а не со строками.Используйте removeClass и addClass, чтобы выполнить то, что вы пытаетесь:

$('.rating').removeClass("rating").addClass(function () {
    return "rating-" + $(this).html();
});
0 голосов
/ 02 ноября 2011

Метод .prepend () вставляет указанное содержимое в качестве первого дочернего элемента каждого элемента в коллекции jQuery (чтобы вставить его в качестве последнего дочернего элемента, используйте .append ()).

Документация

Если вы хотите просто заменить класс, используйте $ (element) .addClass и $ (element) .removeClass, а не prepend.

...