estoy usando este plugin para los menús de la mosca de salida: http://www.filamentgroup.com/lab/jquery_ipod_style_and_flyout_menus/posición jQuery del elemento después de html() llamar
El botón se encuentra dentro de un div así:
<div class="stuff">
some stuff
<a class="quickfire">menu</a>
</div>
estoy solicitando a algún enlace como el siguiente:
jQuery('.quickfire').menu({
content: jQuery('#search-engines').html(), // grab content from this page
showSpeed: 400
});
Donde .quickfire es el nombre de clase del enlace. Hasta ahora todo bien, funciona.
Sin embargo, el usuario también puede activar una llamada AJAX, que obtendrá un montón de HTML del servidor y reemplazará las "cosas" div con contenido nuevo (que a su vez contendrá un enlace rápido).
jQuery.ajax({
url: 'ajax_file.php',
data: {
action: 'create_option_new_version',
id: jQuery('#qid').val(),
div: jQuery("#addMoreOptions").parent().parent().attr('id'),
cleanOutput: true
},
success: function(data, textStatus, jqXHR){
jQuery(".stuff").html(data);
}
});
Como era de esperar, el enlace quickfire ya no está adjunto al menú de jQuery. Así que lo vuelvo a vincular cada vez:
jQuery.ajax({
url: 'ajax_file.php',
data: {
action: 'create_option_new_version',
id: jQuery('#qid').val(),
div: jQuery("#addMoreOptions").parent().parent().attr('id'),
cleanOutput: true
},
success: function(data, textStatus, jqXHR){
jQuery(".stuff").html(data);
var position = jQuery('.quickfire').position();
console.log("left: " + position.left + " top: " + position.top);
jQuery('.quickfire').menu({
content: jQuery('#search-engines').html(), // grab content from this page
showSpeed: 400
});
}
});
Casi allí!
El problema es que, cuando hago clic en el botón Quickfire recién creado, funciona, pero el menú aparece en la esquina superior izquierda de mi pantalla, ¡en lugar de al lado del botón!
Intenté imprimir la "posición" del botón de encendido rápido. Para la carga inicial, se dijo 361 x 527. Para los siguientes, todos dicen 0 x 320
Este es el código real:
jQuery("#addMoreOptions").live('click',function(){
jQuery(".lastPollOptionInput").removeClass("lastPollOptionInput");
jQuery.ajax({
url: 'ajax_file.php',
data: {
action: 'create_option_new_version',
id: jQuery('#qid').val(),
div: jQuery("#addMoreOptions").parent().parent().attr('id'),
cleanOutput: true
},
success: function(data, textStatus, jqXHR){
jQuery("#addMoreOptions").parent().parent().html(data);
jQuery('.quickfire').fgmenu({
content: jQuery('#search-engines').html(), // grab content from this page
showSpeed: 400
});
}
});
});
Me trataron de quickfire el botón "separar" derecho antes de cambiar el contenido, a continuación, volver a insertarlo. Ahora no coloca el menú en la parte superior izquierda, sino que coloca el menú exactamente donde estaba antes de que yo hiciera la llamada ajax (lo cual creo que tiene sentido). No exactamente la ubicación correcta, pero al menos mucho más cerca geográficamente –
¿Puede vincular a la página donde está viendo este problema? Una prueba rudimentaria en jsfiddle (http://jsfiddle.net/6VrgD/3/) sugiere que puede haber algo mal en otra parte de su código ... – Chris
Lamentablemente, no, vive en mi computadora y el cliente no quiere que comparta mucho. Pero agregué un código. –