1

我正在尝试创建一些非常简单的东西。我的代码根据从 SQL 传递的查询创建动态“是”/“否”问题,返回 10 到 20 个问题。

我试过使用JQuery Buttonset()但不能让它在动态 div 上工作。最多我可以让它与第一组一起工作,然后一切都失败了。

我已经使用 SPAN 元素来创建简单的按钮,但这会产生一个问题,检查是否同时选择了是和否。目前创建的每一个都像:

$.ajax({
    url: 'getQuestions.asp',
    dataType: "json",
    data: { area: area },
    success: function (data) {
        $('#output').html('<div class="center" id="date">'+name+' - Audit Area is '+area+'</div><div class="table"><div id="radio">')
        var len = data.length;
        for (var i = 0; i< len; i++) {
            $('#output').append('<div class="tr"><div class="col1">Q'+data[i].Qno+'.</div><div class="col2">'+data[i].Question+'</div><div class="col3"><span class="button" data-val="yes" name="Q'+data[i].Qno+'">&#10004;</span>&nbsp;&nbsp;<span class="button" data-val="no" name="Q'+data[i].Qno+'">&#10008;</span></div></div>')
        }
        noQuestions = i;
        $('#output').append('</div><div class="center" id="date"><div class="button wide" id="finish">Finish Audit</div></div>')
        $('.col2').each(function(){
            $(this).parent().find('.col1, .col3').height($(this).height())
        });
        $('#output').append('</div>')
    }
}); 

这些按钮是在长附加行中创建的,我使用namedata-val属性使其独一无二。

如果我创建一个 ID 为 的 DIV #radio,那么使用$( "#radio" ).buttonset();它只会影响第一个#radio元素。我将如何通过一组动态的是/否问题来实现这一目标?

4

1 回答 1

1

也许这会有所帮助。当我想基于 ajax 调用更新 jquery 手风琴时,我发现我必须销毁然后重新初始化元素才能显示来自 ajax 的数据。代码行如下所示:
$( "#accordion2" ).accordion('destroy').accordion({header: "h3", collapsible: true, active: false, heightStyle: "content"});

结合 a.onreadystatechange它看起来像这样:

function showLookups(str) {
if (str == "") {
    document.getElementById("accordion2").innerHTML = "";
    return;
} else {
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else {
        // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("accordion2").innerHTML = xmlhttp.responseText;
            $( "#accordion2" ).accordion('destroy').accordion({header: "h3", collapsible: true, active: false, heightStyle: "content"});
        }
    };
    xmlhttp.open("GET","faqlookup.php?q="+str,true);
    xmlhttp.send();
}}

我希望这在某种程度上有所帮助。我没有足够的声誉来发表评论...

于 2016-06-27T12:33:58.903 回答