2013-01-10 218 views
1

我正在尝试编写一个函数,如果单击一组单选按钮的任何标签,将会调用该函数。所以我想要一种方式来引用单选按钮组的所有标签。使用jQuery选择单选按钮组的所有标签

从另一个线程(this one)我读,我可以做

$('#[radio_name] label').click(function(){ 
    ... 
}); 

其中[radio_name]是单选按钮组的名称。实际上,我只是试图在引用的线程中实现代码。不幸的是,它不适合我,不知道为什么。

其他一些线程建议您可以选择一个具有$('label[for=[radio_option_id]]')的特定标签,其中[radio_option_id]是标签适用的单选按钮的ID。但是,这只能用于选择一个标签。我需要选择组中具有不同ID的所有标签。

编辑:这里是更完整的上下文请求下面。

var content = "<form id='question_form' name='question_form' action=''>" + page.text; 
content += "<div id='radio_options'>"; 
for (var i=0; i<page.answers.length; i++) { 
    content += "<input type='radio' name='radio_option' id='radio_option_" + i.toString() + "' value='" + i.toString() + "'><label for='radio_option_" + i.toString() + "'>" + page.answers[i] + "</label><br>"; 
} 
content += "</div>"; 
content += "<p><input type='submit' id='submit_button' name='submit_button' value='Submit'></p></form>"; 
display_loc.html(content); 
+2

请在原帖中显示您的html – Blowsie

+0

@Blowsie,done。 – baixiwei

回答

3

使用ATTR contains selector

$('label[for*="radio"]').click(function(){ 
    ... 
}); 

这并包含radiofor属性

式内标签的工作。

<input type="radio" name="emotion" id="radio_sad" /> 
<label for="radio_sad">Sad</label> 
<input type="radio" name="emotion" id="radio_happy" /> 
<label for="radio_happy">Happy</label> 

更新

对于你的HTML代码,你可以做到以下几点。

$('#radio_options label').click(function(){ 

}); 
+0

我不明白。标签的for是radio_option_id,而不是radio_name,那么为什么要选择标签呢?无论如何,我尝试了它,但它没有奏效。 – baixiwei

+0

@baixiwei在没有HTML时总是很难回答,因为可能有很多不同的方法。我添加了一些代码,可以为你工作。 – Blowsie

+0

这很好,谢谢!任何想法为什么最初的尝试不起作用? – baixiwei

2

这听起来对我来说,你只需要将一个类应用到不同的标签并以这种方式访问​​它们。这样你可以按照课程对标签进行分组。

$('label.className').click(function(){ 
    ... 
}); 
+0

谢谢!实际上我已经尝试过了,而且它的工作正常......我应该提到,但是当我发布帖子时忘记了。但是,如果不创建额外的类,是不是有办法做到这一点?为什么我原来的方式不工作? – baixiwei

+0

@baixiwei你原来的代码不起作用,因为'label'不是'input'的子元素,而是'兄弟'。看到你的html后,我打算发布一个更好的解决方案,但Blowsie的解决方案工作。 –