Я работаю над интеграцией поискового инструмента algolia в один из моих проектов. У меня есть следующие строки кода (с добавленными фиктивными переменными для полноты):

var nbHits = 1
var processingTimeMS = 200

$('#hits-stat').html('<div class="float-right p-3">Found <b>' +
            nbHits + '</b> results in <b>' + processingTimeMS + '</b>ms. ' +
            'Powered by Algolia</div>'
        );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="row">
  <div class="col-sm-12" id="hits-stat">
  </div>
</div>

Я ищу простой способ настроить таргетинг на « результаты » в приведенном выше элементе и сделать его во множественном числе, например, для let nbHits = 1 я хочу, чтобы это читалось как «результат». Есть ли такой метод, который занимал бы максимум примерно 3/4 строки кода, так что я не добавляю слишком много kb в свой скрипт? Я видел несколько примеров, которые добавляют около 20 КБ.

Я уверен, что мне следует использовать React / Vue, но я все еще jQuerying свою жизнь прочь: '(

-2
user7179686 2 Янв 2018 в 23:09

2 ответа

Лучший ответ
$('#hits-stat').html('<div class="float-right p-3">Found <b>' +
    nbHits + `</b> result${nbHits==1 ? '' : 's'} in <b>` + processingTimeMS + '</b>ms. ' +
    'Powered by Algolia</div>'
);
0
Ryan Hanekamp 2 Янв 2018 в 20:15

Вы можете использовать условный оператор внутри .html () следующим образом:

$('#hits-stat').html('<div class="float-right p-3">Found <b>' +
            nbHits + (nbHits > 1 ? '</b> results in <b>' : '</b> result in <b>')+ processingTimeMS + '</b>ms. ' +
            'Powered by Algolia</div>'
        );
0
pragya91 2 Янв 2018 в 20:31