• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

zero-cool

Seleccionar objecto descendente

4 mensagens neste tópico

Viva,

Há já alguns dias que me ando a debater com o seguinte: pretendo, na chamada de uma função que recebe o próprio objecto onde é clicado, aceder ao item de lista subordinado a ele, isto é, aceder ao objecto <ul> que está dentro dele. O que acontece é que não tenho conseguido arranjar forma de aceder... já tentei com jquery inclusivamente, mas não consegui (provavelmente não estou a usar a sintaxe correcta..)

<ul class="m1">
   <li onclick="javascript:seleccao(this);">BlaBla
        <ul class="m2">
            <li>Item 1</li>
            <li>Item 2</li>
        </ul>
   </li>
   <li>BluBu
        <ul class="m2">
            <li>Item 3</li>
            <li>Item 4</li>
        </ul>
    </li>
</ul>

function seleccao(obj) {
}

Cumprimentos,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se quiseres usar jquery, e partindo do princípio que o que pretendes é um menu, aqui seque um exemplo :

<ul id="menu">
    <li class="grey"></li>
    <li class="green">
       <ul>
           <li class="grey"></li>
           <li class="grey"></li>
           <li class="grey"><li>
       </ul>
    <li>
    <li class="grey"></li>
    <li class="grey"></li>
</ul>

$(function() {

$('#menu ul').css({display: 'none'});

$('#menu li.green').click(function() {
	var offset = $(this).offset();
	var p = $(this).parent().get(0);
	var t = offset.top;
	var l = offset.left + 166;
	if ($(p).attr('id') != 'menu') {
		t = 'auto';
		l = 166;
	}
	$(this).find('ul:first').css({
		top : t,
		left : l,
		visibility : 'visible',
		display : 'none'
	}).show();
}, function() {
	$(this).find('ul:first').css({visibility: 'hidden'});
});
});

Este script suporta menus multinível. O offset que vês no javascript é para criar o submenu imediatamente ao lado do parent (na horizontal, menu vertical). Se precisares de ajuda a implementar isso, apita.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva,

Obrigado pela resposta de ambos.

De facto, o que eu procurava não estava directamente naquilo que me indicaram, mas continham uma pista que me levou a tentar algumas coisas... e a solução foi: "obj.getElementsByTagName", sendo obj o "this" passado por argumento na função, pois this = document.getElementById() por definição (espero não ter dito uma grande asneira...)

Cumprimentos,

PS: yoda.pt: excelente código :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora