【发布时间】:2017-06-06 02:49:27
【问题描述】:
我从 ajax 调用接收到一个数组,并使用该数组的元素构建了一系列单选框。在我尝试刷新它们以应用 jqm 标记之前,它运行良好。我只看到四分之二的预期,或三分之二的预期。我创建了一个小提琴来说明问题,但小提琴根本没有应用标记,只是显示了正确数量的框。小提琴是:https://jsfiddle.net/wlukasz/9hno6pyh/7/。这是我的html:
<table class="std-table">
<tr>
<td><div id="areas"></div></td>
</tr>
</table>
和javascript:
$(document).on('pagebeforeshow', '#property-details-page', function(){
all_areas = new Array();
var Q001Data = "sql=Q001&dbcall=sql_get_results_array&memid="+<?php echo $member_id?>+"&propid="+<?php echo $property_id?>;
$.ajax({ // ### AJAX to get ALL AREAS on page load ###
url:"pl_process_ajax_call_property_features.php",
type:"POST",
data : Q001Data,
success:function(msg){
$("#areas").html('<fieldset id="all-areas-radio" data-role="controlgroup" data-mini="true"></fieldset>');
all_areas = JSON.parse(msg);
var textToInsert = '';
var i;
for (i = 0; i < all_areas.length; i++) {
var area = JSON.stringify(all_areas[i][0]);
alert(area+i);
textToInsert += '<input type="radio" class="all-areas" name="property-area" id="' + area + '" value="' + area + '"><label for="' + area + '">' + area + '</label>';
alert(textToInsert);
}
$("#all-areas-radio").append(textToInsert);
$("[type=radio]").checkboxradio();
$("[data-role=controlgroup]").controlgroup().controlgroup("refresh");
},
error: function (jqXHR, textStatus, errorThrown) {
alert("Error Q001!");
},
}); // ### AJAX to get ALL AREAS on page load ###
}); // ### document.on
我还使用这个 css 来更改“check”上的按钮标签颜色:
<style>
#all-areas-radio div .ui-radio .ui-radio-on {
background: orange !important;
}
</style>
在我尝试应用 jqm 标记之前,所有预期的单选框都会显示在屏幕上:
$("[type=radio]").checkboxradio();
$("[data-role=controlgroup]").controlgroup().controlgroup("refresh");
这导致标记正确应用于 4 个预期的 2 个框,并且只有两个增强可见。如果我期望 3 个盒子,我只会收到一个增强版,另外两个是隐形的。 我运行 jquery 1.11 和 jqm 1.45。请帮忙。
【问题讨论】:
-
更新,刚刚进来。数组值来自ajax调用,每个都用双引号括起来。当我尝试在没有 ajax 的情况下运行它时,只需手动构建数组,值就没有引号了,一切都很顺利。那么为什么双引号会影响我的代码呢?
-
所以你现在的问题是,如何删除双引号?顺便说一句,你的小提琴不工作。
-
这是我的第一个小提琴 ;-) ,它向我展示了附加的单选框......无论如何,我现在已经删除了双引号并且脚本按预期工作。我现在将我的问题标记为已回答。我不需要这些报价。但是,如果您确实想要引号,问题仍然是怎么办?
-
如果你调整你的问题以反映真正的问题会很好,这样它可能会帮助其他人,因为这不是与 JQM 相关的问题。请在没有 JQM 的情况下检查您的标记,看看值和 id 中的双引号会发生什么。
-
我不知道如何调整原始问题...但你是对的,引号在 ids 中没有位置。
标签: jquery css arrays ajax jquery-mobile