Как обратиться к input через значение переменной? Есть кусок кода HTML





Заголовок
тра ля ля

и в другой части этого же документа
Какой то заголовок
Задумка такая что при клике на элемент .wrap-check должен сниматься или отмечаться input. Написана функция на JQuery: $(".wrap-check").click(function() {
var checkBoxes = $("#1group1i");
checkBoxes.prop("checked", !checkBoxes.prop("checked"));
$(this).toggleClass("red");
});
Работает. Однако инпутов очень много и у всех есть свой id и чтоб не указывать все, решено указывать id инпута через переменную. Т.е. ищем родителя у .wrap-check с классом .right-item и смотрим какой у него ID и к нему в конце добавляем "i" это и есть ID инпута который мы меняем.
Переписываю код:$(".wrap-check").click(function() {
checkBoxes = $(this).closest(".right-item").attr("id")+"i";
find(checkBoxes).prop("checked", !checkBoxes.prop("checked"));
$(this).toggleClass("red");
});
Но такая конструкция не отрабатывает, пишет в консоли "checkBoxes.prop is not a function"
Насколько я понял при подставлении переменной, обращение перестает делаться к объекту.
Как правильно обратиться через переменную именно к объекту?

21 Авг 2019 в 07:04
251 +1
0
Ответы
1

Проблема в вашем коде заключается в том, что вы не правильно обращаетесь к объекту checkBoxes. Вместо этого вы пытаетесь вызвать метод prop() у строки.

Вам нужно использовать функцию find() для поиска элемента с помощью селектора внутри родительского элемента .closest(".right-item"). Затем вы можете вызвать метод prop() у найденного элемента.

Исправленный код будет выглядеть таким образом:

$(".wrap-check").click(function() {
var checkBoxes = $(this).closest(".right-item").find("input[type='checkbox']");
checkBoxes.prop("checked", !checkBoxes.prop("checked"));
$(this).toggleClass("red");
});

Теперь при клике на элемент .wrap-check будет происходить снятие или установка флажка у соответствующего input.

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир