actualizo un div mediente ajax con texto y foto de los post de una categoria especifica, este div tiene [URL="http://manos.malihu.gr/jquery-custom-content-scroller/"]mCustomScrollbar[/URL], luego el div se va cargando con llamadas desde una lista con articulos para pinchar. todo ok hasta aca.
al cargar la pagina todo bien, me carga el post inicial en el div y con su mCustomScrollbar como corresponde, pero al clickar desde la lista para llamar un nuevo post para cargar en el div el mCustomScrollbar se destruye. la info carga todo bien. solo se va el custom scrollbar.
he leido infinidad de articulos en internet tratando de entender como solucionarlo. encuentro en reiteradas ocasiones la recomendacion de usar :
Código:
pero no logro utilizar bien o comprender como resolver el tema con esta linea, se que la cosa va por ahi. Lo tengo montado en wordpress. no hay conflicto de nada. todo carga bien, las llamadas y todo, tal vez falte un poco de pulcritud pero estoy aprendiendo.jQuery('#post-content').mCustomScrollbar("update");
aqui dejo el codigo.
aca se carga la info asincrona en un archivo php:
Código HTML:
Ver original
desde esta lista hago las llamadas enviando el id del post desde el mismo archivo:
Código PHP:
Ver original
<ul id="posts-menu"> <?php foreach ($posts_array as $post){ ?> <li class="entrada" id="<?php echo $post->ID; ?>"><a class="<?php echo $post->post_name; ?> ajax" onclick="post_ajax_get('<?php echo $post->ID; ?>');"><?php echo $post->post_title; ?></a></li> <?php } ?> </ul>
este es mi script, esta en el mismo archivo bajo lo anterior:
Código Javascript:
Ver original
<script> //aca cargo el primer post en el div automaticamente (no se si lo hize bien) (function($){ $(window).load(function(){ var postID = $('.entrada').attr( 'id' ); post_ajax_get(postID); }); })(jQuery); </script> <script> //desde aca enlazo para llamar a los demas post desde la lista function post_ajax_get(postID) { jQuery("a.ajax").click(function(){ //event.preventDefault(); }); // Ajax Call jQuery.ajax({ cache : false, timeout : 8000, type: 'POST', url: '<?php bloginfo('wpurl');?>/wp-admin/admin-ajax.php', data: { action: "acall", id: postID }, beforeSend: function() { $( '#post-content' ).html( '<img src="<?php bloginfo('template_url'); ?>/img/ajax-loader.gif" alt="Cargando contenido"/>' ); }, afterSend: function() { }, success: function(response) { jQuery("#post-content").html(response); jQuery("#post-content").mCustomScrollbar({ scrollButtons:{ enable : false }, theme : "light-thin", scrollbarPosition : "inside", scrollInertia : 1500, axis : "y", autoExpandScrollbar : false, advanced:{ updateOnSelectorChange : true } }); //jQuery('#post-content').mCustomScrollbar("update"); return false; }, error: function( jqXHR, textStatus, errorThrown ){ console.log( 'Error: ' + textStatus, errorThrown ); } }); } </script>
este es el action en el archivo function.php
Código PHP:
Ver original
add_action( 'wp_ajax_acall', 'acall_init' ); add_action( 'wp_ajax_nopriv_acall', 'acall_init' ); function acall_init() { /** Hacemos el Query y el loop */ $args = array('p' => $_POST['id']); $acall_query = new WP_Query($args); while($acall_query->have_posts()) : $acall_query->the_post(); ?> <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <?php if ( has_post_thumbnail() ) {?> <div class="cb-single-thumbnail"> <div class="cb-single_img_thumb_right img_thumb" style="background-image: url(<?php echo wp_get_attachment_url( get_post_thumbnail_id()) ?>)"> <div class="cb-overlay-thumbnail"> <h2><?php the_title(); ?></h2> <span><?php the_time('l d \d\e F, Y'); ?></span> </div> </div> </div> <?php } ?> <div class="entry-content"> <?php the_content(); ?> </div> <!-- end .entry-content --> </div> <?php endwhile; exit; }
todo funciona ok, es solo que al pinchar en la lista para mostrar otro post se me borra la custom scroll bar y queda la scrollbar por defecto del navegador.
se que es un tema de que el elemento cambia y se debe reiniciar el customscrollbar, pero he intentado por las mias y no se como resolverlo.
ojala me puedan ayudar.
saludos