Estoy tratando de establecer la selección predeterminada en un menú de selección en JQuery mobile. Los documentos tienen esto:

   var myselect = $("select#foo");
   myselect[0].selectedIndex = 3;
   myselect.selectmenu("refresh");

Lo que agregué justo debajo de donde creo el menú, pero luego cuando ejecuto el código me sale este error:

throw "no puede llamar a los métodos en" + nombre + "antes de la inicialización;" + "intentó llamar al método '" + opciones + "'";

No estoy segura de qué hacer en este momento ...

4
tweetypi 9 jun. 2011 a las 03:52

3 respuestas

La mejor respuesta

Estás tratando de manipular objetos DOM con javascript que aún no se han cargado. Mueva el javascript más allá del formulario que está tratando de manipular, o más su código en una función que se ejecuta al cargar el documento.

Por ejemplo:

$('#PAGE').live('pagecreate',function(event){
    var myselect = $("select#foo");
    myselect[0].selectedIndex = 3;
    myselect.selectmenu("refresh");
});

Donde PAGE es la identificación de la página que está cargando que contiene el menú que desea manipular.


Editar:

Actualicé el ejemplo para usar el evento JQuery Mobile pagecreate basado en el comentario de jinyuan con respecto a JQuery Eventos móviles.

7
ironchefpython 17 jun. 2011 a las 04:20

Como función jQuery:

$.fn.jqmSelectedIndex = function(index){
    var self = $(this)
    self
        .prop('selectedIndex', index)
    .selectmenu("refresh");

    return self;
}

$("select#foo").jqmSelectedIndex(3);

Esto no está validado pero funciona.

2
Renzo Castro 3 ene. 2012 a las 21:39

Funciona. tal vez desee proporcionar más detalles.

http://jsbin.com/ekayu3/2

1
root 17 jun. 2011 a las 03:47