2013-04-22 3 views
0

Почему тема 'e' не отражается на выходе?Программно изменяющаяся тема в компоненте JQuery Mobile

<!DOCTYPE html> 
<html> 
    <head> 
     <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" /> 
     <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
     <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script> 
     <title>title</title> 

     <script> 
      $(document).bind('pageinit', function() { 
       $('input').attr('data-theme', 'e'); 
      }); 
     </script> 

    </head> 

    <body> 

     <input type="text" /> 

    </body> 
</html> 
+1

«$ (" #input ") .textinput ({theme:" e "});' – Omar

+0

Приведенный выше код работает при инициализации ввода, но после его создания в DOM лучшим способом является добавление/удаление классов. – Omar

+0

Вот что именно в документе JQuery. Но это не работает! Вы проверили себя? – siva636

ответ

0

Кажется, нет прямой и простой способ сделать это.

Омар представил рабочее решение, но это зависит от способа отображения компонентов JQM. Это может не сработать для будущей версии JQM, если они изменят свою модель рендеринга.

Почему мы не можем думать о замене самого компонента? (Что-то вроде следующих)

$('selector').html('<input type="text" data-theme="e"/>').trigger('create'); 

Этот метод может быть немного странным, если компонент имеет много атрибутов, но это, кажется надежным и применим к любым компонентам JQM, которые вы хотели бы изменить динамически.

0

Возможно, вам придется активировать обновление.

$('input').attr('data-theme', 'e').trigger('refresh'); 
+0

Вы протестировали его или написали теорией? :-) Это не работает для меня! – siva636

+0

Просто писать по теории, также глядя на нее :). Вы пытались что-либо использовать с помощью функции .buttonMarkup()? – tymeJV

3

Поскольку .textinput не работает с refresh ни create, вот простой способ сделать это.

$('input').closest('div').removeClass('ui-body-c'); 
$('input').closest('div').addClass('ui-body-e'); 

тема по умолчанию для ввода является c, поэтому удалить его из родительского DIV и добавить тему e. Тем не менее, textinput будет по-прежнему иметь класс ui-body-c, но ui-body-e переопределит его, когда он будет добавлен в родительский div.

Demo

+0

Спасибо, это работает! – siva636

+0

@ DUKE welcome;) – Omar

Смежные вопросы