#javascript #jquery #ruby-on-rails-3
#javascript #jquery #ruby-on-rails-3
Вопрос:
У меня есть очень старый проект Rails 3, который я поддерживаю, к которому мне нужно добавить новую функциональность. В первую очередь отзывчивость с Bootstrap 4.
Это то, что я на самом деле хочу создать: http://jsfiddle.net/k1zbe4o9 /. Как вы можете видеть, он отлично работает в скрипке. Однако этот проект использует jQuery для динамического изменения HTML. Код jQuery довольно прост
if (best_price) {
li_class = "list-group-item";
li_class = " card-list-best";
}
Я использую это в функции следующим образом:
var list_html = $("<li class=" li_class ">" list_details_html "</li>");
Однако, когда я делаю это, я получаю эту странную вещь, что jQuery не возвращает это должным образом, поэтому вместо того, чтобы иметь list-group-item card-list-best
внутри одного <li>
класса, каким-то образом я выхожу card-list-best
за пределы этой области, и результат выглядит так, как показано.
То же самое произойдет, если я сделаю:
if (best_price) {
li_class = "list-group-item card-list-best";
}
Любая помощь приветствуется.
Комментарии:
1. почему вы используете jQuery для этого?
2. Проблема заключается в пробелах в атрибуте класса, который вы пытаетесь установить. Вам нужно заключить все значение атрибута в кавычки, чтобы в значении соблюдался пробел. Это не проблема jQuery, это часть стандарта HTML.
Ответ №1:
Вы можете добавить '
при сборке li
.
"<li class='" li_class "'>" list_details_html "</li>"
как вы можете видеть в примере, я добавил журнал консоли, он возвращает <li class=list-group-item card-list-best>test</li>
so, если "
'
после этого нет или class=
, он будет принимать значение после =
и до первого пробела, поэтому он вернется <li class="list-group-item">test</li>
Рабочий пример
var li_class = "";
var list_details_html = "test";
li_class = "list-group-item";
li_class = " card-list-best";
var list_html = $(
"<li class='" li_class "'>" list_details_html "</li>"
);
console.log("<li class=" li_class ">" list_details_html "</li>")
$('ul').append(list_html)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul></ul>