Javascript JQuery--无法在click事件中正确获取选中的收音机
页面代码如下:Javascript JQuery--无法在click事件中正确获取选中的收音机,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,页面代码如下: <input type="radio" class="direct" name="r1" value="first" /> <span class="proxy">radio1</span> <input type="radio" class="direct" name="r1" value="second" /> <span class="proxy">radio2</span> $('.
<input type="radio" class="direct" name="r1" value="first" />
<span class="proxy">radio1</span>
<input type="radio" class="direct" name="r1" value="second" />
<span class="proxy">radio2</span>
$('.direct').click(function(e) {
var obj = $(this).parent(),
value = obj.find('input:checked').val();
if(value){
alert('you click ' + value + ' button');
}else{
alert('you did not click a button');
}
});
$('.proxy').click(function(e) {
$(this).prev().click();
});
这是你的电话号码
我的问题是:
为什么单击span text不像直接单击单选按钮那样有效。如果将
for
属性设置为正确输入的标签,则可以避免所有这些问题
<input type="radio" class="direct" name="r1" id="r11" value="first"/>
<label class="proxy" for="r11">radio1</label>
<input type="radio" class="direct" name="r1" id="r12" value="second"/>
<label class="proxy" for="r12">radio1</label>
无线电1
无线电1
如果将带有
for
属性的标签设置为正确的输入,则可以避免所有这些问题
<input type="radio" class="direct" name="r1" id="r11" value="first"/>
<label class="proxy" for="r11">radio1</label>
<input type="radio" class="direct" name="r1" id="r12" value="second"/>
<label class="proxy" for="r12">radio1</label>
无线电1
无线电1
正如我前面所说,这个问题并不清楚,至少对我来说是这样。但是,如果您想在单击下一个span时检查收音机,可以通过以下方式:
$('.proxy').click(function(e) {
$(this).prev().attr('checked', true)
});
正如我之前所说,这个问题并不清楚,至少对我来说是这样。但是,如果您想在单击下一个span时检查收音机,可以通过以下方式:
$('.proxy').click(function(e) {
$(this).prev().attr('checked', true)
});
你不能使用
标签元素吗?我不清楚你想要实现什么。当我单击相应的跨度时,我看到收音机已“选中”!你不能使用标签元素吗?我不清楚你想要实现什么。当我单击相应的跨度时,我看到收音机已“选中”!那是真的!但他似乎想用jQuery完成它!我想知道为什么!(至少在这种情况下)@HungryCoder嗯,这是因为我在维护别人的代码。如果我改变它的标签方式,我必须改变很多代码…这是真的!但他似乎想用jQuery完成它!我想知道为什么!(至少在这种情况下)@HungryCoder嗯,这是因为我在维护别人的代码。如果我将其更改为标签方式,我必须更改许多代码…这将设置前一个输入的属性为选中状态。在用户的问题中,单击事件被触发,并且没有设置以前输入的属性,因此他的编码不起作用。谢谢。最后,我通过:$('.proxy').click(函数(e){$(this.prev().attr('checked',true);$(this.prev().click();});代码>@williamcarswell是的,我就是这个意思。你能告诉我为什么会发生这种情况吗?你可以试试你写的内容的简短格式<代码>$('.proxy')。单击(函数(e){$(this.prev().attr('checked',true.click();})代码>@yejinxin很高兴你找到了解决方案。基本上,当您单击单选按钮时,输入单选字段设置为选中状态,但是,当您触发输入单选的.click()事件时,您没有将属性设置为选中状态。这会将以前输入的属性设置为选中状态。在用户的问题中,单击事件被触发,并且没有设置以前输入的属性,因此他的编码不起作用。谢谢。最后,我通过:$('.proxy').click(函数(e){$(this.prev().attr('checked',true);$(this.prev().click();});代码>@williamcarswell是的,我就是这个意思。你能告诉我为什么会发生这种情况吗?你可以试试你写的内容的简短格式<代码>$('.proxy')。单击(函数(e){$(this.prev().attr('checked',true.click();})代码>@yejinxin很高兴你找到了解决方案。基本上,当您单击单选按钮时,输入单选字段设置为选中状态,但是,当您触发输入单选的.click()事件时,您没有将属性设置为选中状态。