Как обратиться к 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" Насколько я понял при подставлении переменной, обращение перестает делаться к объекту. Как правильно обратиться через переменную именно к объекту?
Проблема в вашем коде заключается в том, что вы не правильно обращаетесь к объекту 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.
Проблема в вашем коде заключается в том, что вы не правильно обращаетесь к объекту 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.