2012-01-03 77 views
1

我使用下面的代码,它工作正常。我的问题是我需要点击实际的单选按钮来获取代码来完成这件事。JQuery添加点击事件到现有的代码

我想还添加了一个单击处理程序,这样也触发事件,如果用户点击的div

下面是当前的代码:

<script> 

$(function(){ 
$("input[type=radio]").change(function() { 
$("input[type='radio']", $(this).parent().parent()).each(function() { 
$(this).parent() 
.toggleClass("class_selected", this.checked) 
.toggleClass("class_default", !this.checked); 

}); 
}); 
}); 

</script> 

更新:这里是HTML代码:

<div class="def_app"> 
<span>Title Here</span> 
<input type="radio" name="radio1" /> 
</div> 
+1

Assum这个div只是父母你不能做的:$(“input [type ='radio']”)。parent()。change(..... – DaveHogan 2012-01-03 13:27:02

+0

Use ['.trigger'](http:// api.jquery.com/trigger/) – Konerak 2012-01-03 13:27:09

+1

请显示相关的HTML代码。 – 2012-01-03 13:27:12

回答

0

使用trigger来模拟事件发生,并调用与该事件相关的相应代码。

$(function(){ 
$("input[type=radio]").change(function() { 
$("input[type='radio']", $(this).parent().parent()).each(function() { 
$(this).parent() 
.toggleClass("class_selected", this.checked) 
.toggleClass("class_default", !this.checked); 

}); 
}); 

//call trigger on the input 
$("#yourdiv").click(function() {  
$("input[type=radio]").trigger('change'); 
} 

}); 
0

最有可能你应该只使用一个<label>W3C specs代替<div>包裹的单选按钮。这样,当用户点击标签文本目前正在使用的change事件将被触发..

它是语义的方式,如果我理解正确的问题..


更新看到你的HTML后

只需使用

<label class="def_app"> 
<span>Title Here</span> 
<input type="radio" name="radio1" /> 
</label>