При программном создании слайдеров JQuery Mobile редактируемое числовое поле не заменяет встроенный слайдер браузера. - PullRequest
3 голосов
/ 09 февраля 2012

Как всегда, некоторый код демонстрирует проблему лучше, чем говоря:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>My Page</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" />
    <script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script>
    </head> 

    <body> 
        <div data-role="page">

        <div data-role="header">
        <h1>My Title</h1>
        </div><!-- /header -->

        <div data-role="content">   
        <div id="stufflist">
                    <div><button id="foo">Button 1</button></div>
                    <div><input type="range" min="0" max="10" value="4"/></div>
                </div>
        </div><!-- /content -->

        </div><!-- /page -->

        <script type="text/javascript">
            $('#foo').click(function () {
                $('#stufflist').append("<div><input type='range' min='0' max='10' value='4'/></div>");
                $('#stufflist div:last-child input').slider();
            });
        </script>
    </body>
</html>

Первый слайдер автоматически инициализируется очень хорошо - числовое поле слева, мобильный слайдер jquery справа.

Однако, когда слайдер добавляется и инициализируется с помощью кнопки, появляется мобильный слайдер jquery, а поле редактируемого номера - нет, а встроенный слайдер браузера остается там.

Как сделатьпрограммно добавленные ползунки имеют редактируемые числовые поля, как и автоматически инициализированные?

Спасибо

1 Ответ

3 голосов
/ 09 февраля 2012

Используйте следующий javascript:

$('#foo').click(function () {
    $('#stufflist').append("<div><input type='range' min='0' max='10' value='4'/></div>");
    $("#stufflist").trigger("create");
});

$('#stufflist div:last-child input').slider(); вызовет событие создания на stufflist. Поэтому все мобильные стили jQuery будут применены к содержимому этого div.

Нет необходимости в $('#stufflist div:last-child input').slider(); Это необходимо, только если вы не используете тип ввода range.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...