Я пытаюсь написать сценарий, который получает идентификатор из элемента флажка и что-то с ним делать. Проблема в том, что я не могу настроить таргетинг флажков по значению, поскольку он сгенерирован из запроса mysql.
Вот как выглядит html для флажков:
<div class="cat_checkbox cat_unchecked">
<input id="r_c136" type="checkbox" value="36" name="r_c1[]">
Sample
</div>
<div class="cat_checkbox cat_unchecked">
<input id="r_c131" type="checkbox" value="31" name="r_c1[]">
Text1
</div>
И вот код, который мне удалось написать (я все еще изучаю java-скрипт и jQquery). То, что я пытаюсь сделать, это указать js, чтобы выбрать тот, который содержит "Text1", и найти флажок внутри него, получить его идентификатор, а затем добавить проверочную ссылку на элемент.
Но вместо этого он выбирает первый div, который находит флажок внутри и проверяет его независимо от значения внутри.
$( "#click" ).click(function() {
if ($( "div:contains('Text1')" ))
{
id = $("div:contains('Text1')").find("input[type='checkbox']").attr("id")+"";
alert(id);
$("#"+id).prop("checked", !($("#"+id)).is(':checked'));
}
});
});
Любая помощь будет одобрена. Спасибо.
Используйте $("div:contains('Text1')").length
вместо $("div:contains('Text1')")
Измените свой код как
$("#click").click(function () {
if($("div:contains('Text1')").length) {
var checkbox = $("div:contains('Text1')").find("input[type='checkbox']"); //Find Checkbox here
checkbox.prop("checked", !checkbox.is(':checked'));
}
});
Измените свой код как
$("#click").click(function () {
var checkbox = $("div:contains('Text1')").find("input[type='checkbox']");
if (checkbox.length) {
checkbox.prop("checked", !checkbox.is(':checked'));
}
});
$("div:contains('Text1')").length
вместо$("div:contains('Text1')")