JQuery将click事件添加到无线电输入文本

我希望标签与单选按钮“热”相关联。 我开始使用.siblings()方法实现它。 我认为必须有更好的方法。 单选按钮上的单击事件如下所示:

$(".RadioButton").click(function(event) { var questionId = $(this).find('input').attr('name'); var responseId = $(this).find('input').attr('value'); var answerText = displayPopupQuizAnswer($(this)); 

这很好用。 我希望当用户点击单选按钮旁边的文本标签时执行相同的代码。 html看起来像这样:

  

这是简化但很接近。 我想要的是使用class =“answertextwrapper”捕获元素上的click事件,即$(“。answerwrapper”)。click

因此,我需要在单击文本时以某种方式引用输入。 合理?

有任何想法吗?

简单,使用实际的标签元素 ;

当您使用这些时,不仅可以获得良好的可用性,而且它们的单击事件也会绑定到单选按钮的单击事件。 换句话说, 您不必再执行任何其他jQuery ,只需更新您的HTML即可。

这里有它 – 如果你有firebug你可以清楚地看到$(this)总是引用 ,无论你是否真的点击相应的

    test      

您可以提出某种遍历技术以满足您的需求,但我建议您使用元素 :它不仅是语义上正确的方法,您可以添加for属性来指向它回到输入字段,它是一个标签:

 

然后你的Javascript看起来像这样:

 $("span.RadioButton").click(function(event) { //... }); 

请注意,在Javascript中执行类选择器时,最好先添加标记名称(有关详细信息,请参阅注释)。 我也删除了空链接,因为这样做也是一种不好的做法。 你应该只在CSS中添加游标声明,如果你想要手牌的话。

 

这对我来说效果最好。 这样,您甚至不需要通过label元素中的属性将输入“连接”到标签