Jquery获得选中的复选框

时间:2010-04-26 11:14:51

标签: javascript jquery

您好我想在页面中获取所选复选框的列表,实际上我真正需要的是获取复选框旁边元素的文本,这是一个html元素<li> 代码在下面,它不起作用

这是我目前的jQuery:

$(document).ready(function () {
  $('#target').click(function () {
    alert("in");
    var checkValues = [];
    $('input[name=checkboxlist]:checked').each(function() {
      alert($(this)val());
      checkValues.push($(this)val());
    });
  });
});

这是HTML:

<ul id="7b1fe2bd-1b26-4185-8cd9-aec10e652a70">
 <li>Structured Products<input type="checkbox" name="checkboxlist"</li>
 <li>Global FID
 <ul>
  <li>PowerPoint Presentations<input type="checkbox" name="checkboxlist"</li>
  <li>Global Deck
  <ul>
   <li>Test1<input type="checkbox" name="checkboxlist"</li>

   <li>Test2<input type="checkbox" name="checkboxlist"</li>
   <li>Test3<input type="checkbox" name="checkboxlist"</li>

  </ul>
  <input type="checkbox" name="checkboxlist"</li>
  <li>Credit Default Swaps Position
  <ul>
   <li>Test4<input type="checkbox" name="checkboxlist"</li>

   <li>Test5<input type="checkbox" name="checkboxlist"</li>

  </ul>
  <input type="checkbox" name="checkboxlist"</li>
  <li>Thought Leadership<input type="checkbox" name="checkboxlist"</li>
  <li>Fixed Income Perspectives<input type="checkbox" name="checkboxlist"</li>
  <li>Public Policy Information and Regulatory<input type="checkbox" name="checkboxlist"</li>

  <li>Regional FID<input type="checkbox" name="checkboxlist"</li>

 </ul>
 <input type="checkbox" name="checkboxlist"</li>
 <li>Global Rates<input type="checkbox" name="checkboxlist"</li>
 <li>Global Credit Products<input type="checkbox" name="checkboxlist"</li>
 <li>FX<input type="checkbox" name="checkboxlist"</li>

 <li>Emerging Markets<input type="checkbox" name="checkboxlist"</li>
 <li>Commodities<input type="checkbox" name="checkboxlist"</li>
 <li>testcat<input type="checkbox" name="checkboxlist"</li>
 <li>testcat<input type="checkbox" name="checkboxlist"</li>

</ul>

4 个答案:

答案 0 :(得分:17)

您的输入需要在最后使用/>关闭,以使您的HTML有效,如下所示:

<input type="checkbox" name="checkboxlist" />

然后你可以像这样做jQuery来得到一个文本数组:

$(function () {
  $('#target').click(function () {
    var checkValues = $('input[name=checkboxlist]:checked').map(function() {
        return $(this).parent().text();
    }).get();
    //do something with your checkValues array
  });
});​

You can see this working here

由于您所需要的只是父级.text()的布局,因此您可以使用.map()根据选择器快速获取属性数组。

答案 1 :(得分:4)

$("input[type=checkbox]:checked").parent().text()

答案 2 :(得分:3)

首先,您必须关闭复选框标记

<input type="checkbox" name="checkboxlist"

应该是

<input type="checkbox" name="checkboxlist" />

我认为,从您的HTML中,您可以获得所需文本的文本

$(function(){
    $('#target').click(function(){
        var selected = new Array();
        $("input:checkbox[name=checkboxlist]:checked").each(function(){
            var val = $(this).closest("li").text();
            selected.push(val);
        });
    });
});

答案 3 :(得分:0)

您没有正确关闭输入标签。此外,$(this)val()应为$(this).val()

如果您打算获取包含​​input元素的li元素的文本,您可以写如下:

$(this).parents("li:first").text();