首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态添加单选按钮

动态添加单选按钮
EN

Stack Overflow用户
提问于 2015-03-17 11:46:38
回答 2查看 1.6K关注 0票数 0

我在jquery构建一个学习回复system.Now时遇到了一些严重的问题,我想在每次有一个问题要回答的时候动态填充问题页面。到目前为止,我已经能够做到所有这些,但目前,当我动态调用它们时,我的单选按钮拒绝遵循正常的jquery顺序。当我动态调用设计中断时,当我硬编码时,我就得到了预期的结果。下面的图片是wat试图解释的一个例子。上面扭曲的单选按钮是动态的,下2是硬编码的。

这是我使用的代码:

代码语言:javascript
复制
var possibleAnswers=poss_ans.split(",");//poss_ans is string containing all the answer from the database


        for (var i =0; i < possibleAnswers.length; i++) {

                var label = sp[i];
                   $radio = $('<input />', { type: "radio" }); 
                   var $label = $('<label />', { text: label});
                   var wrapper = $('<div />');
                   wrapper.append($label).append($radio);;

                    $('div#poss_ans').append(wrapper);                      
            }

拜托,这是我的html,对不起,但我对小提琴不太在行,这就是为什么我没有在那里发帖。

代码语言:javascript
复制
    <fieldset class="ui-grid-b">
            <h1 id="title">H1 Heading</h1>
            <p id="question">The question</p>


            <div data-role="fieldcontain">
            <fieldset  data-role="controlgroup">
                <div id="poss_ans"></div>


                    <input type="radio" name="radio-choice-1" id="radio-choice-2" value="choice-2"  />
                    <label for="radio-choice-2">6</label>

                    <input type="radio" name="radio-choice-1" id="radio-choice-3" value="choice-3"  />
                    <label for="radio-choice-3">4</label>
                    <input type="radio" name="radio-choice-1" id="radio-choice-3" value="choice-3"  />
                    <label for="radio-choice-3">8</label><input type="radio" name="radio-choice-1" id="radio-choice-3" value="choice-3"  />
                    <label for="radio-choice-3">2</label>


            </fieldset>
        </div>
        </div>

任何帮助或贡献,grateful.Thanks都会

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-17 13:53:01

对于jQuery移动,在动态添加控件之后,您需要初始化小部件或调用它们的刷新,以便它们应用jQM类。对于您的情况,可以简化HTML:

代码语言:javascript
复制
<h1 id="title">H1 Heading</h1>
<p id="question">The question</p>
<fieldset  data-role="controlgroup">
    <div id="poss_ans" ></div>
</fieldset>

然后在剧本里。您需要向单选按钮中添加一个名称,以便检查其中一个按钮时不检查其他按钮。还添加一个id,并在标签a中指向相关的id。最后,在完成所有附加操作之后,调用div上的enhanceWithin()来初始化checkboxradio小部件,然后告诉控件组字段集刷新自己。

代码语言:javascript
复制
var $posans = $('#poss_ans');    
for (var i = 0; i < possibleAnswers.length; i++) {
    var label = possibleAnswers[i];
    $radio = $('<input />', {
        id: 'rad' + i,
        name: 'possibleAnswers',
        type: "radio",
        value: possibleAnswers[i],
    });
    var $label = $('<label />', {
        for: 'rad' + i,
        text: label
    });

    $posans.append($label).append($radio);
}     
$posans.enhanceWithin().closest("fieldset").controlgroup("refresh");

演示

票数 1
EN

Stack Overflow用户

发布于 2015-03-17 11:56:52

在测试您的代码并放入默认的值字符串并将值添加到动态创建的收音机之后,我可以确认它运行良好。我可以想象您的问题是HTML的主要部分存在问题。但既然你还没加进去,我就无法确认。

以下是您的javascript代码:

代码语言:javascript
复制
var poss_ans = "6,4,8,2";
var possibleAnswers = poss_ans.split(","); //poss_ans is string containing all the answer from the database

for (var i = 0; i < possibleAnswers.length; i++) {

    var label = possibleAnswers[i];
    $radio = $('<input />', {
        type: "radio",
        value: possibleAnswers[i],
    });
    var $label = $('<label />', {
        text: label
    });
    var wrapper = $('<div />');
    wrapper.append($label).append($radio);

    $('div#poss_ans').append(wrapper);
}

并且使用HTML:

代码语言:javascript
复制
<div id="poss_ans"></div>

最后,一个实用的Fiddle - http://jsfiddle.net/andyjh07/tw0k5qkc/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29098263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档