2011-08-05 20 views
6

Mam app zbudowany przy użyciu jQuery (i przy użyciu różnych narzędzi jQuery-UI).Czy można utworzyć element w locie za pomocą jQuery Mobile?

Z jakiegoś powodu muszę przenieść go na smartfony/tablety i postanowiłem użyć do tego celu jQuery Mobile (w celu zminimalizowania liczby zmian).

W mojej aplikacji na wanilię stworzyłem elementy strony w locie, w zależności od interakcji użytkownika.

Na przykład można utworzyć suwak tak (p jest obiektem z wieloma params):

function createSlider(p){ 
    return $("<div/>",{ 
       "id":p.id, 
       "class":p.divClass, 
      }).slider({ 
       "orientation": p.align, 
       "min":p.constraint.min, 
       "max":p.constraint.max, 
       "step":p.step, 
       "value":p.curVal, 
       "animate":"normal" 
       /*and some event handling here, but it doesn't matter*/ 
      }); 

} 

I będzie produkować piękny suwak patrząc. Teraz wygląda na to:

function createSlider(p){ 
    return $("<range/>",{ 
      "id":p.id, 
      "class":p.divClass, 
      "min":p.constraint.min, 
      "max":p.constraint.max, 
      "step":p.step, 
      "value":p.curVal, 
    }); 
} 

Ale jak jest tworzony na bieżąco, wszystkie rzeczy zrobione przez jQuery Mobile w ładowania strony nie robi na nim.

Czy istnieje sposób na wymuszenie tej inicjalizacji bez pisania suwaka w html?

Dzięki.

EDIT: Znalazłem w doc, że może to być osiągnięte za pomocą container.trigger("create"); Jednak to jeszcze nie działa.

EDIT2: Rozwiązaniem było OK create.

Odpowiedz

4

Zgodnie z dokumentacją (patrz edycja w pytaniu), działa element trigger("create") na elemencie zawierającym.

I do tej pracy, trzeba także pamiętać, że zakres jest typ wejścia i nie tag ...

Roztwór roboczy:

function createSlider(){ 
    return $("<input/>",{ 
      "type":"range", 
      "id":"sl", 
      "min":0, 
      "max":15, 
      "step":1, 
      "value":1, 
    }); 
} 

function appendSlider(){ 
    $("#yourdiv").append(createSlider()).trigger("create"); 
} 

Jako marginesie, w dokumentacji jQuery telefon komórkowy nie ma opcji wyszukiwania.

+0

To nie działa dla mnie. Jeśli użyję .trigger ("create"), rozwijane menu () wygląda dziwnie i zachowuje się nieoczekiwanie. – Ted

0

Spróbuj zadzwonić pod numer .page() w kontenerze, do którego dodawana jest treść. Ewentualnie dodanie działającego .page() może również zadziałać.

+0

To nie zadziałało. Próbowałem też spustu ("create"); bez powodzenia. –

+0

Czy mógłbyś opublikować, jak próbowałeś wywołać 'page()'? –

+0

Proszę: http://jsfiddle.net/bZVmk/2/ –

Powiązane problemy