使用javascript/jQuery返回单选按钮的标签值

使用javascript/jQuery返回单选按钮的标签值,javascript,jquery,Javascript,Jquery,我最近开始学习jQuery,几周后第一次在这个网站上找不到问题的答案,这让我觉得我在创建单选按钮时搞砸了 我所做的一点细分:我有一个简单的网页,其中包含一个div: <div id="skins"> </div> 我在每个单选按钮的末尾添加了一个break,这样它们就可以一个接一个地坐在一起,而不是一个接一个地生成(看起来像一个列表) 然后我想检查哪个单选按钮已被选中,并返回其标签文本,经过研究后,可以通过以下方式完成: $("#skins").click(funct

我最近开始学习jQuery,几周后第一次在这个网站上找不到问题的答案,这让我觉得我在创建单选按钮时搞砸了

我所做的一点细分:我有一个简单的网页,其中包含一个div:

<div id="skins">

</div>
我在每个单选按钮的末尾添加了一个
break
,这样它们就可以一个接一个地坐在一起,而不是一个接一个地生成(看起来像一个列表)

然后我想检查哪个单选按钮已被选中,并返回其标签文本,经过研究后,可以通过以下方式完成:

$("#skins").click(function() {
    $("input:radio:checked").each(function() { 
       var text = $(this).text()
       console.log(text)
    })
})
这就是问题所在。在本例中,变量
text
作为空字符串返回,这导致我发现我创建单选按钮的方式不正确


有人能帮我解决这个小问题吗?

与收音机相关的文本没有链接到
输入
标签。因此,您必须将文本和
input
包装到父标记中(类似于
div
):

用JiFus更新的想法更新

可以使用数据属性或值属性

for(var i in skins){
  $("#skins").append("<input type='radio' class='result_skin' name='skin' data-skin-name='" + skins[i].name + "'>" + skins[i].name + "</br>")
}

单选按钮没有
文本
。只有能够在开始标记和结束标记之间封装内容的元素才能有文本,单选按钮没有结束标记,因此它们永远不能“包含”任何内容,更不用说文本了。相反,它们有一个
,这是它们的数据和最终含义所在,而不是它们旁边的文本标题(您称之为标签)所说的内容

因此,您确实需要为每个单选按钮指定一个
,然后您可以通过以下方式获得该值:

$(this).val()
不是:

试试这个:

var skinValues=[“一”、“二”、“三”、“四”、“五”、“冠军”];
//不要在带有数组的循环中使用for/in,请使用.forEach()
skinValues.forEach(功能(皮肤){
//每个单选按钮都需要一个唯一的值,该值是存储其数据的位置
$(“#皮肤”)。追加(“+皮肤+”
) }); $(“#皮肤”)。单击(函数(){ $(“输入:收音机:选中”)。每个(函数(){ var text=$(this).val()//单选按钮没有文本,它们有一个值 console.log(文本) }); });


由于您使用单选按钮的值,请尝试不使用.text()而使用.val()

单选按钮的基本用途是,您可以强制人们从许多选择中选择一个。要实现此效果,您必须在要分组的单选按钮上使用相同的
name
属性

要找出某人选择的单选按钮,您可以使用以下代码使用jQuery进行检查:

$('input[name=radioName]:checked', '#myForm')
如果要在特定表单中搜索,则可以选择
“#myForm”

您在输入旁边编写的文本与输入完全无关。要获取输入的值,您应该添加一个
value
属性或另一个数据属性。有关数据属性的详细信息

将所有这些信息拼凑在一起,您的代码应该如下所示:

创建皮肤列表

for(var i in skins){
  $("#skins").append("<input type='radio' class='result_skin' name='skin' value='" + skins[i].name + "'>" + skins[i].name + "</br>")
}
var text = $('input[name=skin]:checked').val();

该值并不总是与标签相同。使用数据属性而不是值。@Arthur我理解,但是OP对整个用例的处理是错误的,所以我提供了正确的方法。这里不需要
data-
属性。这是帮助我的解决方案。但我现在有一个新问题。如果我尝试向包含空格的value参数添加一个值,当它到达第一个空格时,元素上的其余部分将被指定为参数。示例:这里的值应该是“Champion zed”,它不是一个“参数”
value
是一个HTML属性,
value
属性的值可以包含空格,只要该值用引号封装。我将更新答案以显示这一点。真的。抱歉,我还在学习。我现在给它添加了引号,结果是一个意图为什么所有这些-1?
$(this).val()
$(this).text()
$('input[name=radioName]:checked', '#myForm')
for(var i in skins){
  $("#skins").append("<input type='radio' class='result_skin' name='skin' value='" + skins[i].name + "'>" + skins[i].name + "</br>")
}
var text = $('input[name=skin]:checked').val();