【问题标题】:cannot call methods on flipswitch prior to initialization在初始化之前无法调用翻转开关上的方法
【发布时间】:2015-05-08 18:06:33
【问题描述】:

我想设置一个 jQuery Mobile 翻转开关的选定值:

<select id="quote" data-role="flipswitch" data-theme="b">
    <option value="nee">Nee</option>
    <option value="ja">Ja</option>
</select>

执行以下操作时出现错误:

 $("#quote").val('nee').flipswitch('refresh');

“在初始化之前不能调用flipswitch上的方法”

我也试过了:

$("#quote").val('nee').slider().flipswitch('refresh');
$("#quote").val('nee').flipswitch().flipswitch('refresh');

我怎样才能做到这一点?

【问题讨论】:

标签: javascript jquery html jquery-mobile jquery-mobile-flipswitch


【解决方案1】:
/**
* UI Behaviour,
* Toggle switches.
* @param {bool} isOn || isOff
* @access public
*/
function updateUiSwitches( el, isOn ) {

    el.find( 'input[type=checkbox]' ).each(function( index, el ) {

        $( el ).flipswitch().prop( 'checked', ( isOn )? true : false ).flipswitch( 'refresh' );

    });

}

// toggle switch on
updateUiSwitches( $( '#quote' ), true );

:) 对不起博特;只是在记事本上为你打出来的,它没有经过测试。 . . 但应该做的伎俩(或至少在所需的方向)。

【讨论】:

    【解决方案2】:

    有问题的 HTML 已经以编程方式注入。或者 HTML 被隐藏,例如,在选项卡中,因此从未被 jQuery Mobile 初始化。

    refresh() 之前至少调用一次:

    $("#quote").enhanceWithin();
    

    您可以根据需要增强任意大的代码块:

    $("#huge-html-content").enhanceWithin();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-27
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      • 2013-02-10
      • 1970-01-01
      • 2014-05-29
      相关资源
      最近更新 更多