Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite a todos. Olhem, por favor, este trecho de código:
$("#E25").click(function()
{
setTimeout(function()
{
document.getElementById("ter25").id = "t25";
document.getElementById("E25").style.display = "none";
}, 2000);
$(".class").draggable
({
containment: "#d1", connectToSortable: "#ter25"
});
$("#ter25").droppable
({
hoverClass: "ter-ativo",
drop: function()
{
push($(this).html());
}
});
});
Eu tenho um botão de id E25.
Quando clico nele, divs membras da classe class (criatividade) tornam-se arrastáveis.
Essas mesmas divs podem ser "droppadas" em outra div, de id ter25.
Porém, preciso que apenas uma div da classe class seja "droppada" na ter25.
Então, criei uma função que muda o id da ter25 para t25. Essa funçao é executada 2 segundos após o clique no botão E25.
Assim, pensei eu, as divs da classe class não vão mais poder ser "droppadas". Mas me enganei.
Por quê?!!! O que determina a div droppable é seu id, e eu mudei seu id!Pita, obrigado. Minha versão com bind/unbind não está funcionando:
$("#E25").bind("click", e25);
function e25()
{
setTimeout(function()
{
$("#E25").unbind("click", e25);
document.getElementById("E25").style.display = "none";
}, 2000);
$(".class").draggable
({
containment: "#d1"
});
$("#ter25").droppable
({
hoverClass: "ter-ativo",
drop: function()
{
push($(this).html());
}
});
}
Vou ver agora on/off.$("#E25").on("click","input",e25);
function e25()
{
setTimeout(function()
{
$("#E25").off("click","input",e25);
document.getElementById("E25").style.display="none";
}, 2000);
$(".class").draggable
({
containment: "#d1", connectToSortable: "#ter25"
});
$("#ter25").droppable
({
hoverClass: "ter-ativo",
drop: function()
{
push($(this).html());
}
});
}
Também não funcionou! Desta vez, o display do botão nem muda. E, pra ser sincero, não entendi muito bem como on/off funciona.
Na verdade o que ocorre é que você quando executa ele registra o evento ao elemento que tem o ID "ter25" no momento da execução.
Se depois você alterar o ID do elemento, como o evento já foi registrado para aquele elemento, ele continuará executando.
Somente para você entender, esse seu código fala +/- isso para o javascript: pega todos os elementos com o ID "TAL" e adiciona o evento click.
O que você precisa fazer seria remover o evento ao invés de alterar o ID
Talvez isso ajude:
http://api.jquery.com/off/
http://api.jquery.com/unbind/