淘汰赛模板绑定中的jquery移动水平单选按钮

时间:2013-05-27 11:15:43

标签: jquery-mobile knockout.js

我正在尝试使用敲除teplate绑定绑定jquery移动horizantal单选按钮。

模板中的fielsset看起来像

  <fieldset data-role="controlgroup" data-bind="attr: {id:QuestionID+'_fld'},template:     {name:'optionTemplate', foreach: OptionList}">
  </fieldset>

,选项模板看起来像

<script type="text/x-jquery-tmpl" id="optionTemplate">  
   <input type="radio"  data-bind="attr: { id:OptionID+'_radio',value:OptionID, name: QuestionID+'_rd'}, checked:$parent.OptionId" /> 
   <label data-bind="text:OptionText, attr: {id:OptionID+'_optn', for : QuestionID+'_rd' }">  </lable>
</script>

我试过了

 $('input[type=radio]').checkboxradio().trigger('create');
 $('fieldset').controlgroup().trigger('create');

我的问题是移动css没有应用于fiedset。

1 个答案:

答案 0 :(得分:1)

您必须在模板构建页面后或在页面初始化事件期间执行此操作,如下所示:

$(document).on('pagebeforeshow', '#pageID', function(){ 

});

只有在将内容安全地加载到DOM中时,才能增强页面内容。

其次, NOT refresh functions trigger create 混合。一个或另一个。 Trigger create 用于增强整个内容, NOT 应用于单个元素。每次添加新内容时都不需要重新整理整个页面。

基本上你只想使用:

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

或者如果第一行引发错误:

$('input[type=radio]').checkboxradio();

$('fieldset').controlgroup();

但是我建议你只在添加了所有内容之后使用这一行:

$('#contentID').trigger('create');

其中 #contentID div data-role="content" 对象的ID。或者,如果您不使用内容div,只有 data-role="page" div才能使用此内容:

$('#pageID').trigger('pagecreate');

其中 #pageID 是您网页的ID。

要了解有关动态添加内容的marku增强功能的更多信息,请查看此 answer