Eu criei uma lista no meu site. Esta lista é criada por um loop foreach que é construído com informações do meu banco de dados. Cada item é um contêiner com seções diferentes, portanto, esta não é uma lista como 1, 2, 3 ... etc. Estou listando seções repetidas com informações. Em cada seção, há uma subseção. A construção geral é a seguinte:
<div>
<fieldset class="majorpoints" onclick="majorpointsexpand($(this).find('legend').innerHTML)">
<legend class="majorpointslegend">Expand</legend>
<div style="display:none" >
<ul>
<li></li>
<li></li>
</ul>
</div>
</div>
Portanto, estou tentando chamar uma função com onclick = "majorpointsexpand ($ (this) .find ('legend'). InnerHTML)"
A div que estou tentando manipular é style = "display: none" por padrão, e desejo usar javascript para torná-la visível ao clicar.
O "$ (this) .find ('legend'). InnerHTML" está tentando passar, neste caso, "Expand" como um argumento na função.
Aqui está o javascript:
function majorpointsexpand(expand)
{
if (expand == "Expand")
{
document.write.$(this).find('div').style = "display:inherit";
document.write.$(this).find('legend').innerHTML = "Collapse";
}
else
{
document.write.$(this).find('div').style = "display:none";
document.write.$(this).find('legend').innerHTML = "Expand";
}
}
Tenho quase 100% de certeza de que meu problema é a sintaxe e não tenho muita noção de como funciona o javascript.
Eu tenho o jQuery vinculado ao documento com:
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
Na <head></head>
seção.
fonte
$(this)
. Espero que isto ajude.Respostas:
Ok, então você tem duas opções aqui:
fieldset
(não é semanticamente correto usá-lo para isso de qualquer maneira) e criar uma estrutura você mesmo.Veja como você faz isso. Crie uma estrutura HTML como esta:
Com este CSS: (Isso é para esconder as
.content
coisas quando a página carrega.Em seguida, usando jQuery, escreva um
click
evento para o cabeçalho.Aqui está uma demonstração: http://jsfiddle.net/hungerpain/eK8X5/7/
fonte
e quanto a:
jQuery:
HTML
Violino
Desta forma, você está vinculando o evento click à
.majorpoints
classe e não precisa escrevê-lo no HTML todas as vezes.fonte
Então, em primeiro lugar, seu Javascript nem está usando jQuery. Existem algumas maneiras de fazer isso. Por exemplo:
Primeira maneira, usando o
toggle
método jQuery :jsFiddle: http://jsfiddle.net/pM3DF/
Outra maneira é simplesmente usar o
show
método jQuery :jsFiddle: http://jsfiddle.net/Q2wfM/
Ainda uma terceira maneira é usar o
slideToggle
método de jQuery que permite alguns efeitos. Como o$('#showMe').slideToggle('slow');
que exibirá lentamente o div oculto.fonte
<li>
elementos, não divs. De qualquer forma, ele poderia simplesmente usar o ID do elemento para ocultá-lo.Você pode querer dar uma olhada neste método simples de Javascript a ser chamado ao clicar em um link para expandir ou recolher um painel / div.
Você pode passar o ID div e ele alternará entre exibir 'nenhum' ou 'bloco'.
Fonte original em snip2code - Como recolher um div em html
fonte
Muitos problemas aqui
Eu configurei um violino que funciona para você: http://jsfiddle.net/w9kSU/
fonte
tente jquery,
fonte
Aqui está meu exemplo de animação de uma lista de funcionários com uma descrição expandida.
Violino
fonte
Dê uma olhada no
toggle()
jQuery função :http://api.jquery.com/toggle/
Além disso, a função
innerHTML
jQuery é.html()
.fonte
Como você tem jQuery na página, pode remover esse
onclick
atributo e amajorpointsexpand
função. Adicione o seguinte script ao final da página ou, de preferência, a um arquivo .js externo:Esta solução deve funcionar com o seu HTML como está, mas não é realmente uma resposta muito robusta. Se você alterar seu
fieldset
layout, ele pode quebrá-lo. Sugiro que você coloque umclass
atributo nesse div oculto, gosteclass="majorpointsdetail"
e use este código em seu lugar:Obs: não há
</fieldset>
tag de fechamento em sua pergunta, então estou assumindo que o div oculto está dentro do fieldset.fonte
Se você usou a função de dados recolhível, por exemplo
então fechará o div expandido
fonte
Confira o Readmore.js de Jed Foster biblioteca .
Seu uso é tão simples quanto:
Aqui estão as opções disponíveis para configurar seu widget:
Use pode usá-lo como:
Espero que ajude.
fonte