0

我正在使用几行简单的代码来获取选中复选框的标签并提醒值。但是由于某种原因,警报会为每个复选框而不是其标签显示 [object Object]。我究竟做错了什么?

function validate(){
    var interests="";
    $('input[type=checkbox]').each(function () {
           if (this.checked){
               var id=$(this).attr('id');
               interests += $("#"+id).next()
           }
    });
    alert(interests);

}​

jsFiddle

4

4 回答 4

2

使用.text()

interests += $("#" + id).next().text();

请注意,您可以使用一行代码获得相同的结果:

$('input:checked').next().text();

一行代码jsFiddle

于 2012-09-20T18:24:27.913 回答
2
var id=$(this).attr('id');
interests += $("#"+id).next()

等等,所以您正在创建一个 jQuery 对象,获取元素的 ID……然后使用该 ID 通过该 ID 选择一个 jQuery 对象?这有什么意义?

除此之外,[object Object]是一个包含标签的 jQuery 对象。

要获取实际的标签元素,您可能需要执行以下操作:

var label = $("[for="+this.id+"]")[0]

[0]如果您确实想要一个包含标签的 jQuery 对象,请删除。

于 2012-09-20T18:25:54.237 回答
0

您正在将返回的对象转换next()为字符串,这导致[object Object]您需要调用.text()以获取内容的文本:

interests += $(this).next().text();
于 2012-09-20T18:25:02.117 回答
0

.next()给你一个 jQuery 对象,它在转换为字符串时给你“[object Object]”。您可能需要选项的文本:

interests += $("#"+id).next().text()

http://jsfiddle.net/WFzS7/1/

于 2012-09-20T18:26:49.223 回答