@dikht
начинающий frontend

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

Есть кусок кода HTML

<div id="1group1" class="right-item">
	<div class="img-container"> 
		<img src="" alt=""/>
	</div>
        <div class="description">
        	<div class="wrap-check"> </div> 
                <h3>Заголовок</h3>
                <p>тра ля ля</p>
        </div>  
</div>


и в другой части этого же документа

<input type="checkbox" id="1group1i" name="group1" value="">
<label for="1group1i"><a href="#1group1">Какой то заголовок</a></label>


Задумка такая что при клике на элемент .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"

Насколько я понял при подставлении переменной, обращение перестает делаться к объекту.
Как правильно обратиться через переменную именно к объекту?
  • Вопрос задан
  • 957 просмотров
Решения вопроса 1
alsopub
@alsopub
В checkBoxes находится id, следовательно выбрать элемент по уникальному id можно так - $('#' + checkBoxes).
Видимо find(checkBoxes).prop("checked", !checkBoxes.prop("checked")); надо заменить на
$('#' + checkBoxes).prop("checked", !$('#' + checkBoxes).prop("checked"));

или как-то так.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы