【问题标题】:how can I use Jquery check li checkbox value?如何使用 Jquery 检查 li 复选框值?
【发布时间】:2021-08-03 12:13:28
【问题描述】:

我有一个带有 2 个 li 项目的 ul,在用户选中复选框后,通过 saveBtn 按钮,我如何使用 jquery 来检查哪个 li 被选中?

<ul id="DATE_29_CB_P" class= "new-select" >
<li class="d"><input type="checkbox" onclick="onlyOne(this)" name="check" >07:30-09:00 </li>
<li class="d"><input type="checkbox" onclick="onlyOne(this)" name="check" >07:30-09:00 </li>
</ul>



<button id="DATE_29_CB_P_SUBBMIT" class="save it" onclick="saveBtn(this)">Save it!</button>

//In the saveBtn function, I have the following codes.
$("#DATE_29_CB_P li").each(function() {
    
            if ($(this).find("input[type=checkbox]").prop(
                  ":checked")) {
                    console.log("Check box in Checked");
                } else {
                    console.log("Check box is not Checked");
                }
    });

它从来没有遇到过真正的情况,我是 jquery 的新手,花了几个小时测试但无法让它工作。我需要知道检查了哪一个,还需要获取 html 文本。任何帮助将不胜感激!

【问题讨论】:

    标签: jquery css-selectors html-lists


    【解决方案1】:

    这是checked 而不是:checked。

    例子:

    $('#DATE_29_CB_P_SUBBMIT').on('click', function() {
      $("#DATE_29_CB_P li").each(function(index, item) {
        if ($(this).find("input[type=checkbox]").prop("checked")) {
          console.log("Check box in Checked");
          console.log(index); //Index start with 0 so when it's zero, 1st check box is checked.
          console.log($(this).text());
        } else {
          console.log("Check box is not Checked");
        }
      });
    
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <ul id="DATE_29_CB_P" class="new-select">
      <li class="d"><input type="checkbox" name="check">07:30-09:00 </li>
      <li class="d"><input type="checkbox" name="check">07:30-09:10 </li>
    </ul>
    
    
    
    <button id="DATE_29_CB_P_SUBBMIT" class="save it">Save it!</button>

    或使用.is(":checked")):

    $('#DATE_29_CB_P_SUBBMIT').on('click', function() {
      $("#DATE_29_CB_P li").each(function() {
        if ($(this).find("input[type=checkbox]").is(":checked")) {
          console.log("Check box in Checked");
        } else {
          console.log("Check box is not Checked");
        }
      });
    
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <ul id="DATE_29_CB_P" class="new-select">
      <li class="d"><input type="checkbox" name="check">07:30-09:00 </li>
      <li class="d"><input type="checkbox" name="check">07:30-09:00 </li>
    </ul>
    <button id="DATE_29_CB_P_SUBBMIT" class="save it">Save it!</button>

    【讨论】:

    • 谢谢!!!另一个问题,我稍微更新了代码。 $("#DATE_29_CB_P li input[type=checkbox]") .each(function() { if ($(this).prop("checked")) {//true}else{//false}});然后如果我还想获取复选框的文本信息,我在真实情况下尝试了 console.log($("#DATE_29_CB_P_SUBBMIT li").text()) ,它将打印所有 li 选项文本,有没有办法只打印选定的一个?看起来我必须为每个 li 添加一个 id?或者有没有办法通过索引像数组一样获取它?
    • 检查了哪一项?检查索引。我改变我的答案。见第一个例子。
    • 索引从 0 开始,所以当它为零时,第一个复选框被选中。
    • 但是如果第一个li的文本信息为“07:30-09:00”,第二个有“09:30-10:00”,如果选中第二个,如何获取“ 09:30-10:00" 文本数据?
    • 我又打了一个电话,比如 ("#DATE_29_CB_P li").each(function() { data.push($(this).text());} 然后当检查复选框状态时,使用索引打印数组数据;我想知道是否有一种方法可以将它们一起处理而不是两个不同的循环。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 2013-09-03
    • 2017-03-26
    相关资源
    最近更新 更多