【问题标题】:JQuery Mobile sliders inserted dynamically动态插入的 JQuery Mobile 滑块
【发布时间】:2013-03-29 17:28:54
【问题描述】:

我正在动态插入滑块。问题是当我动态插入它们时,它们没有 jquerymobile 的主题。 这是我使用的代码:

for (var i = array_colors_available.length - 1; i >= 0; i--) {
        $('#insert_colors_slider').append('<div data-role="fieldcontain" ><fieldset data-role="controlgroup"> <label for="slider-8">'+array_colors_available[i]+' : '+'</label><input id=slider-'+i+' type="range" name='+array_colors_available[i]+' value="0" min="0" max="25" data-highlight="true" data-theme=c data-track-theme="f"></fieldset></div>');
        if(array_slider_info_value != null) $('#slider-'+i).val(array_slider_info_value[i+1].value);
    };

如果我使用 JQueryMobile 的方法,那么屏幕上会出现两个滑块:

for (var i = array_colors_available.length - 1; i >= 0; i--) {
        $('#insert_colors_slider').append('<div data-role="fieldcontain" ><fieldset data-role="controlgroup"> <label for="slider-8">'+array_colors_available[i]+' : '+'</label><input id=slider-'+i+' type="range" name='+array_colors_available[i]+' value="0" min="0" max="25" data-highlight="true" data-theme=c data-track-theme="f"></fieldset></div>');
        $('#slider-'+i).slider();
        if(array_slider_info_value != null) $('#slider-'+i).val(array_slider_info_value[i+1].value);
    };

我做错了什么?当我不使用这些方法时,没有主题,当我使用它时,我有两个滑块而不是一个... 谢谢!

【问题讨论】:

  • 生成的滑块的ids是什么?
  • 在创建滑块后使用.slider("refresh"); 刷新滑块。 $('#slider-'+i).slider().slider('refresh');.
  • @Jesse id 是一个数字 1,2,3...
  • @Omar 它仍然出现 2 个滑块...
  • 我认为如果你在 jsfiddle 中重新创建它会更容易解决问题。

标签: javascript jquery-mobile jquery jquery-mobile-slider


【解决方案1】:

这只是 jQuery Mobile 错误之一。您的代码中也存在错误,标签必须指向正确的滑块,在您的示例中并非如此。

动态滑块有两种创建方式,均不包含slider()方法:

示例 1

pagebeforecreatepagecreate 活动期间进行。

工作示例:http://jsfiddle.net/Gajotres/caCsf/

$(document).on('pagebeforeshow', '#index', function(){    
    // Add a new input element
    $('[data-role="content"]').append('<input type="range" name="slider-2" id="slider-2" value="25" min="0" max="100"  />');
});

示例 2

pagebeforeshowpageshow 事件期间执行此操作,并使用 trigger('create') 设置滑块样式。

工作示例:http://jsfiddle.net/Gajotres/NwMLP/

$(document).on('pagebeforeshow', '#index', function(){    
    // Add a new input element
    $('[data-role="content"]').append('<div data-role="fieldcontain"></div>');
    $('[data-role="fieldcontain"]').append('<fieldset data-role="controlgroup"></fieldset>');
    $('[data-role="controlgroup"]').append('<label for="slider-2">Slider 2</label>');
    $('[data-role="controlgroup"]').append('<input type="range" name="slider-2" id="slider-2" value="25" min="0" max="100"  />');
    // Enhance new input element, unfortunately slider() function is not goinf to work correctly
    //$('[type="range"]').slider();
    $('#index').trigger('create');
});

在本例中,如果我们尝试使用 slider(),则除了输入框之外,只有所有内容都是样式。

关于这个和其他一些相关内容的更多信息可以在我的另一个ARTICLE中找到,或者找到它HERE

【讨论】:

  • 两个例子都抛出了 JavaScript 运行时错误 (0x800c001c)。
猜你喜欢
  • 2012-01-27
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
  • 2012-09-10
  • 1970-01-01
  • 2013-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多