Функция Jquery для получения текста и изменения стиля Div соответственно - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь получить число в div (генерируемое сервером) и внести соответствующие изменения в div (поэтому, в основном, если число равно> = 4, индикатор выполнения будет зеленым с заголовком 'superb', если> = 3 < 4, оранжевый индикатор с заголовком «хорошо» и т. Д.).

js:

var scores = $("div.progress-bar");
function progressbar_function(){
if (parseInt($(this).text()) >= 4){
$(this).addClass("bg-success");
$(this).text('Superb');
} else if(parseInt($(this).text()) >= 3) {
$(this).addClass("bg-warning");
$(this).text('Good');
}
};
$.each(scores, function(index, item) {
$(item).change(progressbar_function);
});

HTML

  <ul class="list-group festival-list">
                  <li class="list-group-item">
                    <span class="float-left"><span class="ec ec-banana"></span> Vegan friendly:</span>
                    <div class="progress float-right" style="width: 50%; height: 22px;">
                      <div class="progress-bar" role="progressbar" style="width: {% widthratio vegan_friendly_avg 5 100 %}%" aria-valuenow="{{vegan_friendly_avg|default_if_none:"No reviews yet"}}" aria-valuemin="0" aria-valuemax="5">{{vegan_friendly_avg|floatformat:2|default_if_none:"No reviews yet"}}</div>
                    </div>
                  </li>
                  <li class="list-group-item">
                    <span class="float-left"><span class="ec ec-coffee"></span> Coffea quality:</span>
                    <div class="progress float-right" style="width: 50%; height: 22px;">
                      <div class="progress-bar" role="progressbar" style="width: {% widthratio coffea_quality_avg 5 100 %}%" aria-valuenow="{{coffea_quality_avg|default_if_none:"No reviews yet"}}" aria-valuemin="0" aria-valuemax="5">{{coffea_quality_avg|floatformat:2|default_if_none:"No reviews yet"}}</div>
                    </div>
                  </li>
.
.
.
</ul>

Это не работает, что я делаю не так? (

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

попробуйте

$(function () {
    $("div.progress-bar").each(function () {
        if (parseInt($(this).text()) >= 4) {
            $(this).addClass("bg-success");
            $(this).text('Superb');
        } else if (parseInt($(this).text()) >= 4) {
            $(this).addClass("bg-warning");
            $(this).text('Good');
        }
    });
});

https://jsfiddle.net/x1yhctad/3/

0 голосов
/ 14 ноября 2018
var scores = $("div.progress-bar");
function progressbar_function($item) {
    if (parseInt($item.text()) >= 4) {
        $item.addClass("bg-success");
        $item.text('Superb');
    } else if (parseInt($(this).text()) >= 3) {
        $item.addClass("bg-warning");
        $item.text('Good');
    }
};
$.each(scores, function (index, item) {
    progressbar_function($(item));
});

Этот код должен работать.Проблема с вашим кодом состоит в том, что нет события change, которое должно вызываться для события div, которое не имеет элемента div, вы должны инициализировать стиль выполнения при загрузке скрипта.

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