/ / jQuery Tools overlays: os itens adicionados através do ajax precisam ser ativados (ou algo assim)? - jquery, jquery-tools

jQuery Tools overlays: os itens adicionados através do ajax precisam ser ativados (ou algo assim)? - jquery, jquery-tools

Eu estou usando o jQuery Tools para configurar alguns formulários de sobreposição e caixas de diálogo no meu site. Eles têm funcionado bem até agora, mas uma mudança para o meu site está levantando alguns problemas:

Na página que contém as sobreposições, eu estou fazendoalgumas coisas ajaxy para adicionar novos itens à página. Um desses itens contém um link que deve acionar a sobreposição e apresentar um formulário, assim como os outros itens da página. A adição do item à página está funcionando corretamente, mas o link nesse item não abre o formulário na sobreposição. Em vez disso, é aberto em uma página separada. Quando eu atualizo a página, o novo item está lá e seu link agora é aberto corretamente na sobreposição.

Minha suspeita é que apenas adicionando o item aoA página não é suficiente - eu tenho que cutucar o jQuery, ou o jQuery Tools, ou algo assim, para que algumas coisas internas sejam configuradas que irão conectar o link do novo item ao overlay. Eu estou pensando que isso acontece quando a página é recarregada, uma vez que o item "novo" é apenas mais um pedaço de conteúdo na página, mas isso não está acontecendo na chamada do ajax, já que tudo o que faz é inserir alguns coisas no DOM da página.

Estou aqui e (se sou) alguém sabeo que tem que ser cutucado ou chutado em jQuery ou ferramentas para obter essas conexões feitas? Eu tenho procurado chamadas api chamadas coisas como "ativar" ou "inicializar", mas sem muita sorte ... Obrigado!

Respostas:

1 para resposta № 1

Eu suponho que o seu link html adicionado ao ajax seja algo como isto:

<a href="external-content.htm" rel="#overlay">Do It</a>

E você tem algum javascript em algum lugar na sua página que se parece com isso:

$("a[rel]").overlay({
/* your options here */
});

O javascript mostrado aqui simplesmente encontra e aplica o plugin de sobreposição a todos a elementos que definem um rel atributo. Em uma página típica (usando algo como jquery "s document.ready()), o javascript é executado depois de o html é carregado e tudo funciona bem.

O problema aqui é que sua operação ajax adiciona o novo link para a página depois de o javascript já foi executado, então a sobreposiçãoO plugin nunca é anexado ao seu link adicionado ajax; e sem o aprimoramento da sobreposição, o link funciona como um link HTML normal - abrindo a página externa em uma nova janela.

A solução é simplesmente executar o javascript novamente depois de sua função ajax é concluída. Assumindo que você está usando jQuery.ajax para executar o seu pedido ajax, você só precisa fornecer um success manipulador no settings objeto, e lá dentro, basta executar novamente o plugin javascript de sobreposição, como mostrado acima.


EDITAR: Devo observar que esta não é a solução mais eficiente, pois aplicará o plugin de sobreposição a todos os links da página - mesmo aqueles que já o tinham. É claro que você pode usar um seletor mais específico para segmentar apenas os links que acabou de adicionar, mas para a maioria dos aplicativos, não será um problema aplicá-lo novamente a tudo.