我在动态添加选择标签时遇到问题,没有应用CSS和JQM添加的其他html标签。
HTML:
<div data-role="page" id="page_1"> <div id="select_option_groups"> <div data-role="fieldcontain"> <select name="select_options_1"> <option value="" selected>Please select an option</option> <option value="foo">Foo</option> <option value="bar">Bar</option> </select> </div> </div> </div>
JS:
$(function(){ var counter = 2; var onChange = function(e){ val = $(':selected',this).val() || ''; if (val != ''){ // they may be able to toggle between valid options, too. // let's avoid that using a class we can apply var c = 'alreadyMadeASelection'; if ($(this).hasClass(c)) return; // now take the current select and clone it, then rename it var newSelect = $(this) .clone() .attr('name','select_options_'+counter) .attr('id','select_options_'+counter) .appendTo('#select_option_groups') .change(onChange); $(this).addClass(c); counter++; } else { var id = $(this).attr('name').match(/\d+$/), parent = $(this).parent(); $(this).remove(); // re-order the counter (we don't want missing numbers in the middle) $('select',parent).each(function(){ var iid = $(this).attr('name').match(/\d+$/); if (iid>id) $(this).attr('name','select_options_'+(iid-1)); }); counter--; } }; $('#select_option_groups select').change(onChange); });
我试过了:
// this gets the select tags to stack but still no CSS $(newSelect).fieldcontain('refresh'); // does nothing $(newSelect).page(); // does nothing $('#page_1').page();
我不知道为什么.selectmenu('refresh');不起作用,但是对于页面-您可以在元素上使用一次。之后,它将在下一次跳过该元素。
.selectmenu('refresh');
.page()
.selectmenu()
应该有帮助。如果不是,请尝试从头开始创建一个新的select元素,并使用原始元素中的选项加载该元素,然后添加新元素,然后继续。
[编辑]
以上只是一个猜测。您的代码是正确的。只需调用一次.selectmenu() 工作代码即可