jquery treeview plugin para cambiar el comportamiento de enlace (evitar el colapso)
-
23-09-2019 - |
Pregunta
Estoy usando el jQuery Treeview plugin.Echa un vistazo a la "Muestra 1 - default" proporcionada en la página de demostración del plugin http://jquery.bassistance.de/treeview/demo/.En mi caso todos los archivos y carpetas están los enlaces.Si hago clic en, por ejemplo, en la ampliación de la "Carpeta de 2" será la primera colapso y, a continuación, siga a la ubicación del enlace.El comportamiento de los que me gustaría es, que sólo plegados se expanda primero y si ya se expandió y se quede como esta.
El código del plugin (jquery.treeview.js) que cambian el comportamiento es el siguiente:
66 this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event) {
67 toggler.apply($(this).next());
68 }).add( $("a", this) ).hoverClass();
Ya he descubierto la manera de obtener todos los vínculos, los cuales deben ser cambiados:
$('a').parent().parent().filter('.collapsable')
El resultado será una matriz de todos los li que actualmente plegable (ampliado):[li., li.plegable]
Pero no sé cómo proceder a partir de ahí :-( Espero que alguien me pueda ayudar a lo largo de...
Ya he cambiado correctamente el linkbehavior para el actual seleccionado (clase=seleccionado) enlace con este código:
$(".current").click(function(e){
e.preventDefault();
});
Muchas gracias de antemano!
No hay solución correcta
Otros consejos
tal vez no era claro lo que realmente quiero hacer, así que voy a intentar mejorar mi verbalización próxima vez ;-)
La respuesta a mi propia pregunta es:
$('li').filter('.collapsable').find('a:first:not(.current)').click(function(e){
e.stopImmediatePropagation();
});
Tal vez ayuda a alguien que está buscando algo similar.
Saludos!!
ACTUALIZACIÓN (el publicado solución anterior no funciona si el usuario se expandió un nodo sin necesidad de recargar la página después)
$('a').click(function(e){
if ($(this).is('.current')) {
e.preventDefault();
} else if ($(this).parent().parent().is('.collapsable')) {
e.stopImmediatePropagation();
};
});
Éste funciona como se supone.:-)