动态插入JQuery Mobile滑块

Mar*_*tiz 4 javascript jquery jquery-mobile jquery-mobile-slider

我正在动态插入滑块.问题是,当我动态插入它们时,它们没有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);
    };
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果我使用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);
    };
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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

Gaj*_*res 6

这只是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"  />');
});
Run Code Online (Sandbox Code Playgroud)

例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');
});
Run Code Online (Sandbox Code Playgroud)

在这个例子中,如果我们尝试slider()只使用除输入框之外的所有样式.

关于这一点以及其他相关内容的更多信息可以在我的其他文章中找到,或者在这里找到.