我已经查看了此问题时可用的所有类似问题,并且所提供的解决方案均未在下面的代码中使用。谷歌也没有帮助,除了我确实发现动态代码的一些问题,其中整个菜单没有被包装,但这些问题应该用触发器或者EnhanceWithin方法修复 - 这些已在这里尝试过。
我是一个相当新的javascript和jquery库,这是我第一个使用jquery mobile的应用程序。
从php文件生成的原始html:
<div class="cell_container force_org_select">
<label for"force_org[new_555]" class="ui-hidden-accessible">Troop Type</label>
<select name="force_org[new_555]" id="force_org[new_555]" class="roster_cell" data-mini="true">
<option value="hq">HQ</option>
<option value="elite">Elite</option>
<option value="solo">Solitaire</option>
<option value="formation">Std Formation</option>
</select>
处理动态注入的Javascript函数:
$(document).on('click','.add_item', function(event) {
event.preventDefault();
var the_link = $(this).attr('href')
var area = getParameterByName(the_link, 'area');
var type = getParameterByName(the_link, 'type');
var squad_id = getParameterByName(the_link, 'squad_id');
var vehicle = getParameterByName(the_link, 'vehicle');
var divider = getParameterByName(the_link, 'divider');
var preset = $('#preset').val();
$.post(cmd_ajax.ajaxurl,{action: 'cmd_add_item_mobile', type: type, preset: preset, squad_id: squad_id, vehicle: vehicle, divider: divider}, function(data) {
if(type == 'squad' || type == 'divider') {
$('#list').append(data).enhanceWithin();
//$('#list').append(data).trigger("refresh");
//$('#list').append(data).trigger("create");
$('.squad_help_button').tooltipster({
contentCloning: true,
trigger: 'custom',
triggerOpen: {
click: true,
tap: true
},
triggerClose: {
click: true,
tap: true
}
});
}
else {
$('#' + area).append(data).enhanceWithin();
}
//console.log("squad_id:"+this_id);
set_unit_sortable();
});
return false;
});
我也尝试在函数中添加.selectmenu("refresh",true)
,但似乎什么也没做。非动态生成的自定义选择工作正常。
如果我在生成的选择菜单上使用data-native-menu="false"
属性,则弹出窗口不起作用,您无法选择任何内容,如果删除该属性,则原生选择将按预期工作。
我考虑过在函数的最后使用selectmenu()刷新,但我似乎也无法捕获select菜单的元素id。我唯一的猜测是,当我尝试检索它时,它还没有在DOM中创建。