Así que estoy usando el jQuery selector de fecha, y funciona bien. Estoy utilizando AJAX para ir y obtener un poco de contenido, obviamente, cuando el nuevo contenido se aplica el enlace se pierde, yo aprendido acerca de esta última semana y descubrió acerca de la .live() método.

Pero, ¿cómo puedo aplicar esto a mi selector de fecha? Porque esto no es un evento, por tanto, .live() no será capaz de ayudar a… derecho?

Este es el código que estoy usando para enlazar el selector de fecha para mi de entrada:

$(".datefield").datepicker({showAnim:'fadeIn',dateFormat:'dd/mm/yy',changeMonth:true,changeYear:true});

No quiero llamar a este metho cada vez que mi AJAX de incendios, ya que quiero mantener lo más genérico posible.

Saludos 🙂

EDITAR

Como @nick solicitado, a continuación es mi función contenedora consiguió el ajax() método:

var ajax_count = 0;
function getElementContents(options) {
if(options.type===null) {
options.type="GET";
}
if(options.data===null) {
options.data={};
}
if(options.url===null) {
options.url='/';
}
if(options.cache===null) {
options.cace=false;
}
if(options.highlight===null || options.highlight===true) {
options.highlight=true;
} else {
options.highlight=false;
}
$.ajax({
type: options.type,
url: options.url,
data: options.data,
beforeSend: function() {
/* if this is the first ajax call, block the screen */
if(++ajax_count==1) {
$.blockUI({message:'Loading data, please wait'});
} 
},
success: function(responseText) {
/* we want to perform different methods of assignment depending on the element type */
if($(options.target).is("input")) {
$(options.target).val(responseText);
} else {
$(options.target).html(responseText);
}
/* fire change, fire highlight effect... only id highlight==true */
if(options.highlight===true) {
$(options.target).trigger("change").effect("highlight",{},2000);
}
},
complete: function () {
/* if all ajax requests have completed, unblock screen */
if(--ajax_count===0) {
$.unblockUI();
}
},
cache: options.cache,
dataType: "html"
});
}

Lo que acerca de esta solución, tengo un rules.js incluyen todos mis primeras vinculaciones con los elementos, si yo tuviera que poner en una función, a continuación, llamar a esa función en el éxito de devolución de llamada de ajax método, de esa manera no estaría repitiendo código…

Hmmm, pensamientos por favor 😀

  • Cómo estás haciendo ajax, $.ajax? Sus opciones para no repetir código de una función para hacer este llamado con un contexto, o .liveQuery(), si usted está interesado en cualquiera de los dos me puede mostrar cómo hacer esto, solo un comentario @nick y que me haga saber.
  • Hey @nick, he editado mi post original, véase también la posible solución a continuación… 🙂 gracias
  • Gracias 🙂 enviado una respuesta a continuación sobre cómo ir sobre esto
InformationsquelleAutor Ben Everard | 2010-05-10

3 Comentarios

  1. 8

    Usted puede hacer esto de esta manera:

    function createPickers(context) {
    $(".datefield", context || document).datepicker({
    showAnim:'fadeIn',
    dateFormat:'dd/mm/yy',
    changeMonth:true,
    changeYear:true
    });
    }

    Para ejecutarse en document.ready, si usted ya tiene un document.ready función puede llamar a:

    createPickers();

    O se puede ejecutar en es propio documento.listo mango, como este:

    $(createPickers);

    En su success de devolución de llamada se llame como este:

    createPickers(responseText);

    Lo que esto hace es seleccionar sólo .datefield en el contexto (internamente, este utiliza .find()), por lo que en document.ready usted está seleccionando todos los elementos coincidentes para crear selectores de fecha, pero en su petición ajax, usted está seleccionando sólo los elementos coincidentes que acaba de llegar a la respuesta, no la creación de duplicados de los selectores de fecha en cualquier lugar.

    • Aceptar esto parece la mejor solución. Nick le sugeriría a todos mis normas vinculantes (como hacer clic, cambiar, etc) están contenidas dentro de una función, que me puede llamar en el éxito de devolución de llamada? Me ahorrará tener que utilizar .live() entonces? Sólo me preguntaba acerca de las limitaciones de .live(). Gracias 🙂
    • Si no estás creación de widgets con los otros eventos que haría uso de .live(), más limpio, más sencillo y menos controladores de eventos. Por las cosas que crear widgets como el datepicker, sí que me gustaría añadir estos en una sola función que toma un contexto como este.
    • Muchas gracias por que eres ayudar a Nick!
  2. 0

    Primer puerto de escala sería leer sobre esta cuestión, si no lo has hecho ya:


    jQuery live() no jQuery UI datepicker

    «Tengo que se unen a la caja de luz había entradas en la primera aparición de la caja de luz, pero no después.»

    «Cuando el álbum se cierra, estoy re-anexar el contenido de la página (para no perder el div de contenido), y esta parece ser la matanza de la vida() llamada».

    • No entiendo cómo esto se relaciona a mí, como no dar pistas o una respuesta?
  3. 0

    selector de fecha es la función de clic en la entrada de texto de su compañero. así que usted puede ir fácilmente:

    $('#datepicker').live('click', function(){$(this).datepicker($.datepicker.regional['en']);})
    • Esto creará un selector de fecha widget de cada clic en el elemento, esto sería extremadamente derrochador.
    • +1 Nick, quería evitar que este método sea posible. Gracias de todos modos XGreen.
    • No sabía esto. Gracias por la corrección de nick

Dejar respuesta

Please enter your comment!
Please enter your name here