使用 jQuery 动态更改单选按钮上的文本更改多个单选组
我正在开发一个 Rails 应用程序,但遇到了一个我似乎无法解决的问题。
我正在使用 jQueryUI Accordion,并通过循环遍历我得到的数组来构建必要的结构。
手风琴所需的 HTML 结构如下:
所以我正在做的是在每个内容 div 中创建一个独特的单选组。我想要这样做,以便当我在内容 div 之一中选择单选选项时,h3 标头中的文本将更改为所选单选选项的值。
我想为此使用 jQuery,但我对如何使用感到困惑;具体来说,我很难理解要使用哪些选择器以及如何引用单选组 div“所属”的 h3 header 同级。我也很困惑如何处理整个页面上 11 个不同的无线电组,每个无线电组都位于一个内容 div 中。
提前致谢。
I'm developing a Rails app and I've run into an issue that I can't seem to figure out.
I'm using the jQueryUI Accordion and I'm building the requisite structure by looping through an array I've got.
The HTML structure that the accordion needs is the following:
<div id="accordion">
<h3><a href="#">First header</a></h3>
<div>First content</div>
<h3><a href="#">Second header</a></h3>
<div>Second content</div>
</div>
So what I'm doing is creating a unique radio group within each content div. I want to make it so that when I select a radio option within one of the content divs, the text in the h3 header changes to the value of the radio option selected.
I want to use jQuery for this but I'm confused about how to; specifically I'm having a hard time understanding what selectors to use and how to refer to the h3 header sibling that the radio group div 'belongs' to. I'm also rather confused about how to handle it for the 11 different radio groups on the whole page, each within a content div.
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好的,这就是你想要做的...
因此,每当“input:radio”更改时,jquery 都会采用 $(this) (你单击的单选按钮),转到其父级的 div (因此 .parent() ),找到前一个 h3 (即 .prev('h3')),然后将 html 更改为 $(this).val(),这是您单击的单选按钮的值。
请注意,如果您在输入周围添加一个或更多内容,则必须添加另一个 .parent() 才能再上一层。
您也可以将 .html() 更改为您想要的任何内容... html()、text() 等。
Ok so here is what you want to do...
So anytime a 'input:radio' is changed, jquery will take $(this) (the radio button you clicked), go up to its parent's div (hence .parent()), find the first previous h3 (which is .prev('h3')), then change the html to $(this).val() which is the value of the radio button that you clicked.
Note that if you ever add a or something more around the input, you would have to add another .parent() to go up one more level.
Also you could change .html() to whatever you want... html(), text(), ect..