Jquery mobile jquerymobile赢得';t标记收音机已检查

Jquery mobile jquerymobile赢得';t标记收音机已检查,jquery-mobile,Jquery Mobile,当我从API调用函数中动态插入单选按钮时,当您单击它们时,结果按钮不会被标记为“选中”,这意味着它们不能正常工作。它们得到的是“ui radio on”类,但不是checked属性,这意味着.change()事件也不会触发。为什么? // Show places list user.getConnections("worksat", function(error, data, connections){ for(var i = 0; i < connections.length; i+

当我从API调用函数中动态插入单选按钮时,当您单击它们时,结果按钮不会被标记为“选中”,这意味着它们不能正常工作。它们得到的是“ui radio on”类,但不是checked属性,这意味着.change()事件也不会触发。为什么?

// Show places list
user.getConnections("worksat", function(error, data, connections){  
for(var i = 0; i < connections.length; i++) {
    var connection = connections[i];
    var place = connection.name;

    // Add place where person works at to list   
    $('#radio-clock-in').append('<label><input type="radio" name="clock-place" id="clock-' + place + '" value="' + place + '" />' + place + '</label>');
}

// refresh radio buttons
$('input[type=radio]').checkboxradio();
});

//If I put the same .append() code right here, the button will behave normally
//显示位置列表
getConnections(“worksat”,函数(错误、数据、连接){
对于(变量i=0;i
此外,按钮样式正确,但不承认它们在控制组内,因此它们是分散的,而不是整齐的包装

<div data-role="panel" id="places">
<fieldset data-role="controlgroup" id="radio-clock-in">
    <!-- Dynamically injected radio buttons go here -->
</fieldset>
</div>

jquery mobile v1.4.0-rc1

*更新:只是想注意,如果我将完全相同的代码放在user.getConnections函数之外,按钮会工作(attr被选中),并且.change()事件会触发。我认为这与api调用延迟有关。

Update: 要将事件附加到动态创建的单选按钮,请执行以下操作:

$("static_parent").on("change", "dynamic_element", function () {
  // code
});
您可以将其放置在user.getConnections函数外部


要使复选框/收音机正常工作,您需要为每个复选框/收音机指定一个唯一的id,并将
for=id
添加到标签标签中

<label for="unique_id"><input type="radio" name="clock-place" id="unique_id" value="" />Place</label>
然后,刷新控制组

$('#radio-clock-in').controlgroup("refresh");


事实证明,我只需要将事件侦听器移动到user.getConnections函数中:

$('[name=clock-place]').change(clockIn);

没有“分组”的控制组仍然很奇怪,尽管如果我在这个特定页面显示之前创建广播列表,它可以正常工作。

输入
一个id和
标签
添加
for=id\u给定
属性。我得到了相同的结果。请注意,放置在user.getConnections函数外部的相同代码工作正常。此外,正如jqm文档中所述,如果您的输入嵌套在标签标记中,则不需要“for”属性。完美的解决方案,太棒了!奥马尔,我找不到你的联系方式。我需要聘请一名jqm顾问,时间仅为一个小时或两个小时,如果有兴趣,请联系我jlannen@gmail.com. 谢谢即使您将其放置在函数外部,并且通过对动态项使用正确的事件绑定
$(“#radio clock in”)。在(“change”、“[name=clock place]”上,函数(){clockIn();})。控制组没有分组,因为从1.4开始,您需要将它们附加到控制组容器中,然后刷新它,正如我在下面的回答中提到的。
$('[name=clock-place]').change(clockIn);