【问题标题】:in jquery using checkbox get li attr在 jquery 中使用复选框获取 li attr
【发布时间】:2015-02-24 10:32:05
【问题描述】:

我想使用复选框获取 li 的数据。在我的代码中,您可以看到复选框和歌曲列表...当复选框被选中并单击按钮时,我想要。获取所有选中的 li attr。

当用户选中复选框并单击按钮时,使用 jquery。我想得到

  • attr 就像歌曲、封面和艺术家一样。

    this site一样

     <table>
            <ul id="playlist" class="hidden">
                <tr>
                    <td><input type="checkbox" value="check_1" name="check_1" id="check_1"></td>
                    <td><li id="songlist" song="Bhai Nirmal Singh Ji - Apne Har Peh Benti.mp3" cover="cover1.jpg" artist="Linkin Park">Bhai Nirmal Singh Ji - Apne Har Peh Benti.mp3</li></td>
                    <td><a href="" id="add">Add to Cart</a></td>
                </tr>   
                <tr>
                    <td><input type="checkbox" value="check" name="check"></td>
                    <td><li id="songlist" song="Linkin Park - One Step Closer.mp3" cover="cover1.jpg" artist="Linkin Park">One Step Closer.mp3</li></td>
                    <td><a href="" id="add">Add to Cart</a></td>
                </tr>
                <tr>
                    <td><input type="checkbox" value="check" name="check"></td>
                    <td><li song="Linkin Park - With You.mp3" cover="cover1.jpg" artist="Linkin Park">With You.mp3</li></td>
                    <td><a href="">Add to Cart</a></td>
                </tr>
                <tr>
                    <td><input type="checkbox" value="check" name="check"></td>
                    <td><li song="Linkin Park - Points Of Authority.mp3" cover="cover1.jpg" artist="Linkin Park">Points Of Authority.mp3</li></td>
                    <td><a href="">Add to Cart</a></td>
                </tr>
                <tr>
                    <td><input type="checkbox" value="check" name="check"></td>
                    <td><li song="Linkin Park - Crawling.mp3" cover="cover1.jpg" artist="Linkin Park">Crawling.mp3</li></td>
                    <td><a href="">Add to Cart</a></td>
                </tr>
                <tr>
                    <td><input type="checkbox" value="check" name="check"></td>
                    <td><li song="Linkin Park - Runaway.mp3" cover="cover1.jpg" artist="Linkin Park">Runaway.mp3</li></td>
                    <td><a href="">Add to Cart</a></td>
                </tr>
    
            </ul>
    
        </table>
    
  • 【问题讨论】:

    • 到目前为止你尝试了什么?
    • (旁注)自定义属性的 HTML5 约定将是 data-song="..."data-cover="..." 而不仅仅是 song="..."cover="..."
    • Kartikeya 是对的。您必须尝试一些事情,如果遇到困难,请向我们展示您的代码,以便我们为您提供帮助。你不能只是问“你能为我做这件事吗?”
    • 你的html格式不对,所以先把你的html改成正确的语法。
    • 是的,table &gt; ul &gt; tr ... wooops... 使用ul &gt; li(列表)或table &gt; tr &gt; td(表格)

    标签: jquery html css list checkbox


    【解决方案1】:

    试试这个方法: 更新

    $(window).load(function() {
    
      $(".add,#play_button").click(function() {
        var selected_items = $("#playlist tr td input:checked");
    
        if (selected_items.length == 0) {
          alert("item is not selected");
        } else {
    
          var song = [];
          var cover = [];
          var artist = [];
          selected_items.each(function() {
            song.push($(this).data("song"));
            //semilerly following
            //cover.push($(this).data("cover"));
            //artist.push($(this).data("artist"));
    
    
          })
          alert(song);
        }
      });
      $("#selectall").click(function() {
        var c = this.checked;
        $("#playlist :checkbox").prop("checked", c);
      });
      $("#selectall_button").click(function() {
        var c;
        if ($(this).val() == "Select All") {
          c = true;
          $(this).val("Deselct All");
        } else {
          c = false;
          $(this).val("Select All");
        }
    
        $("#playlist :checkbox").prop("checked", c);
      });
    
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <table id="playlist">
      <tr>
        <td>
          <input type="checkbox" data-song="Bhai Nirmal Singh Ji - Apne Har Peh Benti.mp3" data-cover="cover1.jpg" data-artist="Linkin Park" name="check[]">
        </td>
        <td>
          Bhai Nirmal Singh Ji - Apne Har Peh Benti.mp3
        </td>
        <td><a href="javascript:void(0);" class="add">Add to Cart</a>
        </td>
      </tr>
      <tr>
        <td>
          <input type="checkbox" data-song="Bhai  Ji - Apne" data-cover="cover1.jpg" data-artist="Linkin Park" name="check[]">
        </td>
        <td>
          Bhai Nirmal Singh Ji - Benti.mp3
        </td>
        <td><a href="javascript:void(0);" class="add">Add to Cart</a>
        </td>
      </tr>
    
    
    </table>
    <br/>
    <br/>
    <input type="checkbox" id="selectall" />select all/deselect all
    <input type="submit" id="selectall_button" value="Select All" />
    <input type="submit" id="play_button" value="Play selected" />

    【讨论】:

    • 我认为我想要的是,如果我选中所有复选框,然后单击另一个按钮显示所有歌曲名称
    • @harvinder 然后将该函数的内部代码添加到您的另一个按钮单击函数中
    • 否,我想要底部的按钮,当检查多个车轮箱时,单击按钮,警告检查的所有歌曲名称。 span>
    【解决方案2】:

    好的,我会这样做:

    $("button").click( function(){
      
      var selection = [];
      
      $("input[type=checkbox]:checked:enabled").each( function(){ // Selects checked checkboxes and loops through them
        
          selection.push({
              "title"  : $(this).attr("data-title"),
              "artist" : $(this).attr("data-artist")
          
           })
        
      })
      
      $("#results").html(JSON.stringify(selection));
      
      console.log(selection);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <ul>
       <li>
         <input type="checkbox" data-title="song 1" data-artist="Artist 1" /> Song 1
       </li>
      
       <li>
         <input type="checkbox" data-title="song 2" data-artist="Artist 2" /> Song 2
       </li>
      
      <li>
         <input type="checkbox" data-title="song 3" data-artist="Artist 3" /> Song 3
       </li>
    </ul>
    
    <button>Get checked songs</button> <br>
    <br>
    <p id="results"></p>

    现在“选择”是一组对象,每个对象包含一个标题、一个艺术家等。

    将数据直接存储在复选框中,为什么要通过将它们存储在不同的元素中来增加难度?

    【讨论】:

    • 我想要这样,但我在复选框上点击
    • 我不知道为什么,因为它有点复杂,但在这种情况下,您可以转到$(this).parent(),它将为您提供li 而不是checkbox
    【解决方案3】:

    如果我对你的理解正确,那么你希望从li 获取歌曲和封面,如果选中该复选框,我还更改了链接的类,以便我可以使用 jQuery 轻松找到它们

    jsFiddle

    【讨论】:

    • 我忘了说我已经改变了你的链接的类,所以我可以用 jQuery 找到它们
    • 我认为我想要的是,如果我选中所有复选框,然后单击另一个按钮显示所有歌曲名称
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    相关资源
    最近更新 更多