1

在 jQuery 中单击提交按钮后,我试图获取一组选定的复选框,但我似乎无法显示任何内容。下面的代码:

jQuery:

$(".btn").live("click",function () {
    var ffirst = $('input:checkbox[name="first[]"]:checked').map(function () {
        return this.value;
    }).get();
});
$.each(ffirst, function(index, value) {
    alert(index + ': ' + value);
});

和下面的HTML:

<input type="checkbox" value="1" checked="checked" name="first[]">
<input type="checkbox" value="2" checked="checked" name="first[]">
<input type="button" class="btn" value="Go">

任何帮助,将不胜感激!

编辑:根据评论更改,但仍然损坏。

4

4 回答 4

0

你的 JS:

name=first

您的 HTML:

name="first[]"

这些不匹配。

添加方括号。您还需要引用它们,因为它们不是字母数字。

$('input:checkbox[name="first[]"]:checked')
于 2013-02-20T17:13:24.533 回答
0

您使用了错误的选择器,请使用:

$('input:checkbox[name="first[]"]:checked')

现场演示

于 2013-02-20T17:17:46.900 回答
0

尝试:

$(".btn").on("click",function () {
    $('input:checkbox[name="first[]"]:checked').each(function(index) {
        alert(index + ': ' + this);
        console.log(this);
        console.log($(this));
    });
});

如果真的需要,只需使用 (.live)

于 2013-02-20T17:28:35.267 回答
0

您需要在单击处理程序之前声明 ffirst 数组,因为它超出了范围。每个循环必须在单击处理程序中发生,因为一旦填充了数组,它就需要执行。

不是最优化的代码,但这是一个有效的示例:

var ffirst = []; 
$(".btn").live("click",function () {
  ffirst = $('input[name="first[]"]:checked').map(function () {
    return $(this).val();
  });

  $.each(ffirst, function(index, value) {
    alert(index + ': ' + value);
  });
});

工作演示

于 2013-02-20T17:43:13.907 回答