Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá a todos!
Fiz o uso de contadores para saber quando o menu está aberto ou não, fazendo ele subir (slideUp) caso contador%2 seja verdadeiro e se o elemento que surgiu por uma consulta em Ajax exista, só que quando eu clico em outro e volto para o menu anterior e tento fecha-lo clicando na barra dele o contador fica par então retorna como false fazendo o menu não fechar gerando o problema, qual seria o melhor jeito de resolver, deixando uma div para cada conteúdo carregado em Ajax?
Ande está escrito Ajax funciona assim, carrega o conteúdo na div #refeicoestopfive, para cada categoria tem uma div independente, logo a #refeicoestopfive serve como pai para elas.
Segue a baixo o código com 2 menus apenas, tem 5 no total:
cont_cm = 3
cont_bg = 3
cont_br = 3
cont_np = 3
cont_cp = 3
$(".botaoref h1 a").click(function(){
link = $(this).attr("href")
// Começo Cafe da manha
if(link == "cafedamanha"){
cont_cm++
if(document.getElementById("cardapiocafedamanha") && cont_cm%2 == true){
$("#refeicoestopfive").slideUp("slow")
}else{
script ajax
}
return false
} // Fim Cafe da Manha
// Começo Burger
if(link == "burger"){
cont_bg++
if(document.getElementById("cardapioburger") && cont_bg%2 == true){
$("#refeicoestopfive").slideUp("slow")
}else{
script ajax
}
return false
} // Fim Burger
// Começo Beirute
if(link == "beirute"){
cont_br++
if(document.getElementById("cardapiobeirute") && cont_br%2 == true){
$("#refeicoestopfive").slideUp("slow")
}else{
script ajax
}
return false
} // Fim Beirute
// Começo Nossos Pratos
if(link == "nossospratos"){
cont_np++
if(document.getElementById("cardapionossospratos") && cont_np%2 == true){
$("#refeicoestopfive").slideUp("slow")
}else{
script ajax
}
return false
} // Fim Nossos Pratos
// Começo Chopp e Pesticos
if(link == "chopppesticos"){
cont_cp++
if(document.getElementById("cardapioshopppesticos") && cont_cp%2 == true){
$("#refeicoestopfive").slideUp("slow")
}else{
script ajax
}
return false
} // Fim Nossos Pratos
}) // Fim função click para o ajaxNão funcionou, olha como ficou:
if(document.getElementById("cardapiocafedamanha").style.display == "none"){
$("#refeicoestopfive").slideUp("slow")
}
Também tentei assim e nada:
if($("#cardapiocafedamanha").css("display", "none")){
$("#refeicoestopfive").slideUp("slow")
}
talvez ele nem tenha display definido ainda, debugue os valores que a propriedade te retorna
Por que não faz essa parte DropDown com CSS?
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Shwa, da erro pois como ele é verificado primeiro e não está carregado pelo Ajax na memória. Só funciona desta maneira:
if(document.getElementById("cardapiocafedamanha")){
if(document.getElementById("cardapiocafedamanha").style.display == "block"){
$("#refeicoestopfive").slideUp("slow")
}
}
Verifica se o elemento existe, como não existe de começo ele vai pro else e executa a consulta em Ajax, então quando clico de novo vai pro If e não funciona, a div com o id refeicoestopfive não fecha!
O que eu fiz foi o seguinte, criei uma div para cada categoria no html para poder ter um controle maior, só que por exemplo, se eu clicar em 1, o outro não fecha, segue:
$(document).ready(function(){
$(".botaoref h1 a").click(function(){
link = $(this).attr("href")
// Começo Cafe da manha
if(link == "cafedamanha"){
if(document.getElementById("refeicoestopfive").style.display == "block"){
$("#refeicoestopfive").slideUp("slow")
}else{
$.ajax({method: "get", url: "refeicoes.php", data: "pg="+link,
beforeSend: function(){
$("#carregando").slideDown("slow")},
complete: function(){
$("#carregando").slideUp("slow")},
success: function(html){
$("#refeicoestopfive").html(html).slideDown("slow")
}
}) // Fim Ajax cm
}
return false
} // Fim Cafe da Manha
// Começo Burger
if(link == "burger"){
if(document.getElementById("refeicoestopfive2").style.display == "block"){
$("#refeicoestopfive2").slideUp("slow")
}else{
$.ajax({method: "get", url: "refeicoes.php", data: "pg="+link,
beforeSend: function(){
$("#carregando").slideDown("slow")},
complete: function(){
$("#carregando").slideUp("slow")},
success: function(html){
$("#refeicoestopfive2").html(html).slideDown("slow")
}
}) // Fim Ajax cm
}
return false
} // Fim Burger
// Começo Beirute
if(link == "beirute"){
if(document.getElementById("refeicoestopfive3").style.display == "block"){
$("#refeicoestopfive3").slideUp("slow")
}else{
$.ajax({method: "get", url: "refeicoes.php", data: "pg="+link,
beforeSend: function(){
$("#carregando").slideDown("slow")},
complete: function(){
$("#carregando").slideUp("slow")},
success: function(html){
$("#refeicoestopfive3").html(html).slideDown("slow")
}
}) // Fim Ajax cm
}
return false
} // Fim Beirute
// Começo Nossos Pratos
if(link == "nossospratos"){
if(document.getElementById("refeicoestopfive4").style.display == "block"){
$("#refeicoestopfive4").slideUp("slow")
}else{
$.ajax({method: "get", url: "refeicoes.php", data: "pg="+link,
beforeSend: function(){
$("#carregando").slideDown("slow")},
complete: function(){
$("#carregando").slideUp("slow")},
success: function(html){
$("#refeicoestopfive4").html(html).slideDown("slow")
}
}) // Fim Ajax cm
}
return false
} // Fim Nossos Pratos
// Começo Chopp e Pesticos
if(link == "chopppesticos"){
if(document.getElementById("refeicoestopfive5").style.display == "block"){
$("#refeicoestopfive5").slideUp("slow")
}else{
$.ajax({method: "get", url: "refeicoes.php", data: "pg="+link,
beforeSend: function(){
$("#carregando").slideDown("slow")},
complete: function(){
$("#carregando").slideUp("slow")},
success: function(html){
$("#refeicoestopfive5").html(html).slideDown("slow")
}
}) // Fim Ajax cm
}
return false
} // Fim Nossos Pratos
}) // Fim função click para o ajax
$("#mtnewsletter").click(function a(){
$("#email").css("border", "2px solid yellow")
})
})
Thiago Retondar, vai ter mta informação em cada div carregada pelo Ajax o que inviabiliza o dropDown, e também tem que ser animado.Bem, como é jQuery, vou mover o tópico para o fórum correto para que tenha melhor suporte.
Tópico movido:
JavaScript / DHTML http://forum.imasters.com.br/public/style_emoticons/default/seta.gif JavaScript / DHTML » JavaScript Frameworks
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
cara, acho que nao precisa de um contador pra saber se ta aberto ou nao
se tu quer saber se um elemento ta escondido por exemplo, checa se o element.style.display == 'none'