--
Grupo de jQuery Brasil.
REGRAS: http://groups.google.com/group/jquery-br/web/regras-do-grupo
USE O JSBIN.COM / JSFIDDLE.NET PARA CÓDIGOS.
Email: jque...@googlegroups.com
Biba: jquery-br+...@googlegroups.com
Site: http://groups.google.com/group/jquery-br?hl=pt-BR
2011/2/11 Ciro Nunes <ciroa...@gmail.com>:
--
foobar
> Desculpe, mas acredito que não tenha lido a postagem inicial que se
> refere a desativar e ativar o clique nas divs.
>
> Não estou preocupado com a repetição dos nomes das divs, pelo
> contrário, isso muito me ajuda.
Como assim? Id não repete. O que pode repetir são as classes…
Como é que repetição dos nomes das divs muito te ajuda?
Voltando ao seu tópico, não consegui entender direito o que você quer
fazer…
Mas vendo seu código, vi que você só faz unbind.
Quando você faz isto, você retira os "vínculos" dos clicks na sua div.
Mas como você pretende fazer a div ser clicável novamente sem um bind?
Aqui seu eu abro o alguma div não consigo fazer mais nada…
Creio que você terá que fazer um bind e fechar a div, no momento do
click.
Outra coisa que não entendi é o porque do laço each.
--
Oséias Ferreira.
> O que eu preciso é que o click seja reativado assim que a pessoa
> clicar em salvar, APENAS isso :)
>
> Preciso reativar o click abaixo da linha que esconde a div:
>
> $('.abrir-'+class1).hide();
E onde está esta coisa que salva aqui http://jsbin.com/unova4 ?
--
Oséias Ferreira.
> $('.abrir-'+class1+' #salvar').click(function(){
> if($('input[name=bairro]:checked').get() == ''){
> alert('Escolha pelo menos um bairro!');
> } else {
> $('.abrir-'+class1).hide();
> $('#texto.'+class1).html('');
> $('#texto.'+class1).append(
> $('input[name='+class1+']:checked + label').map(function() {
> return $(this).text();
> }).get().join(", ")
> );
> }
> });
>
> Verfica se há algum checkbox selecionado, caso não tenha retorna erro
> pedindo para selecionar.
>
> Esconde a div #abrir, zera o conteudo do #texto para receber os campos
> checkbox selecionados. Falta reativar aí o click.
Só agora que eu vi que somente o bairro está funcional.
Basicamente o bind funciona assim:
http://jsbin.com/unova4/3/edit
Mas creio que você precisará desenvolver melhor este seu código que
está um pouco complicado…
Mais informações http://api.jquery.com/bind/
--
Oséias Ferreira.
>
> --
> Oséias Ferreira.
> Carol, não funcionou, e nem sei se removeAttr retira cliques, mas
> enfim...
>
> Dei uma alterada no código pra ficar um poco mais fácil do pessoal
> entender, aqui está:
>
> http://jsfiddle.net/upbRG/1/
>
> Ainda preciso fazer o clique voltar a funcionar, já que dei unbind
> nele. Se retirarem a linha que faz o .unbind, irão ver que ao clicar
> por exemplo em: Estado e em Bairro sem salva-los eles irão se
> sobrepor. Por isso quero fazer o click voltar a funcionar.
>
> Obrigado pela ajuda pessoal.
Carlo.
Mas como disse na mensagem anterior não faz muito sentido seu código.
Por exemplo:
$(".form-select").each(function () {
var getClass = $(this).children('#texto').attr('class');
Você faz um laço e armazena nesta variável. O problema é que este each
será executado só quando você carrega a página.
Ao meu ver o laço é necessário se você for fazer um bind para cada um
destes elementos.
O problema é: Você está fazendo errado…
No mínimo deveria ser assim:
var getClass = $(this).children('.texto').attr('id');
Já que não faz sentido repetir id. E se não faz sentido repetir id,
para que serve o laço, se ele só vai passar uma vez…
Enquanto você insistir em fazer a coisa errada vai ficar muito difícil
te ajudar.
Vou tentar fazer o algoritmo para você.
1- Quando carrega a página você faz um laço e associa ao click com o
bind. É melhor você fazer isto numa função separada, fora do laço, e
fazer um call nela, para evitar ter que repetir trechos do mesmo código.
Esta função será a mesma que você usará quando o usuário clicar em
gravar.
Ou seja. Na prática existirão o mesmo número de funções será igual ao
número de elementos, uma vez que o bind faz é "criar" uma função em
tempo de execução.
O jeito certo de fazer isto é colocar todas as coisas que você precisa
associar na mesma classe. Cada uma destas deverá ter um id diferente.
2- Quando clica em alguma destes itens, e abre a div, você precisa
desabilitar estes binds, usando a função unbind. Um novo laço each com
unbind em tudo que você precisa desabilitar.
3- Quando o usuário termina de preencher o for e clica no gravar, você
deve novamente fazer outro each, com um call para a função que associa
novamente o click com o bind. Isto habilitará os cliques onde você
precisa.
--
Oséias Ferreira.