Поместите текст справа от флажка

Я пытаюсь динамически создавать пользовательский интерфейс для меток и флажков.

Моя идея - построить вот так

function renderCheckbox(ui, uiField, labelText, idField, nameOnForm){
    let id = abp.helper.getUniqueElementId();
    let container  = $('<div class = "form-group col-lg-3 col-md-3 col-sm-6">');
    let label = $('<label class = "m-checkbox mt-35px">').attr('for', idField).text(labelText);
    let checkbox = $('<input type = "checkbox" class = "filter">').attr('name', nameOnForm).attr('id', idField);
    checkbox.appendTo(label);
    let result = container.append(label);

    return result;
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<div class = "form-group col-lg-3 col-md-3 col-sm-6">
        <label for = "HideVerifiedTickets" class = "m-checkbox mt-35px">
            <input id = "HideVerifiedTickets" class = "filter" type = "checkbox" name = "HideVerifiedTickets" />
            HideVerifiedTickets
            <span></span>
        </label>
    </div>

но проблема в том, что он генерирует HTML вот так

Как переместить текст после флажка?

Вместо checkbox.appendTo(label); просто используйте checkbox.prependTo(label); ...?

CBroe 28.05.2024 09:22

Вы можете стилизовать метку как флексбокс с обратным расположением строк.

Krzysztof Krzeszewski 28.05.2024 09:24

Поскольку вы используете for=, вам не нужно вставлять флажок внутри метки, поэтому container.append(checkbox).append(label); return container;

fdomn-m 28.05.2024 11:15

@fdomn-m понял твою точку зрения. Правильный.

Death-is-the-real-truth 28.05.2024 11:17
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
97
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете создать textNode с помощью метода createTextNode() и добавить его к метке так же, как вы это делаете с флажком.

В примере я удалил атрибут for и идентификатор элемента ввода, поскольку они, вероятно, не нужны.

let cb1 = renderCheckbox(null, null, 'Test', 'test');

$(document.forms.form01).append(cb1);

function renderCheckbox(ui, uiField, labelText, nameOnForm) {
  let container = $('<div class = "form-group col-lg-3 col-md-3 col-sm-6">');
  let label = $('<label class = "m-checkbox mt-35px">');
  let checkbox = $('<input type = "checkbox" class = "filter">').attr('name', nameOnForm);
  checkbox.appendTo(label);
  let text = $(document.createTextNode(labelText));
  text.appendTo(label);
  container.append(label);

  return container;
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<form name = "form01">
</form>

зачем создавать дополнительную переменную и присваивать ей весь HTML, а затем возвращать ее?

Death-is-the-real-truth 29.05.2024 08:38

@Death-is-the-real-truth Я не уверен, что понимаю ваш вопрос на 100%, но когда я отвечаю на вопрос, я часто стараюсь получить ответ, включая пример кода, как можно ближе к тому, что есть в вопросе OP. Если вы ссылаетесь на переменную let cb1, это просто для тестирования. Как вы можете прочитать из вопроса, у OP есть много флажков для вставки, поэтому в рабочем коде, вероятно, есть какой-то цикл, который вызывает функцию renderCheckbox - как это выглядит, мы не знаем. Мой ответ просто сосредоточен на том, чтобы заставить функцию возвращать правильное значение и сделать код максимально прозрачным/понятным.

chrwahl 29.05.2024 09:15

Я спрашиваю об этих строках let result = container.append(label); return result;

Death-is-the-real-truth 29.05.2024 09:31

Другие вопросы по теме