Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marcelo2605

[Resolvido] Erro em função

Recommended Posts

Pessoal, essa minha função:

 

function comparar(){


$('body').on('click', '.clique1', function() {
var $this = $(this);
$('body').off('click', '.clique1');
window.palavra1 = $this.attr('class').split(' ')[1];
console.log('palavra1: ', palavra1);
$('.box').not($this).addClass('clique2').removeClass('clique1');
});

$('body').on('click', '.clique2', function() {
var $this = $(this);
   window.palavra2 = $this.attr('class').split(' ')[1];
console.log('palavra2: ', palavra2);

if(palavra1==palavra2){
	alert('certo');
	$('.box').addClass('clique1').removeClass('clique2');
	$('body').on('click', '.clique1'); 
}else{
	alert('errado');
	$('.box').addClass('clique1').removeClass('clique2');
	$('body').on('click', '.clique1');
}

});

}

 

Está dando o seguinte erro: Uncaught TypeError: Object .clique1 has no method 'apply'

 

O erro está relacionado a esta linha: $('body').on('click', '.clique1');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, beleza?

 

Qual versão do jQuery está utilizando? Como está seu HTML? Fiz um teste simples aqui e funcionou...

<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script>
function comparar(){
$('body').on('click', '.clique1', function() {
	var $this = $(this);
	$('body').off('click', '.clique1');
	window.palavra1 = $this.attr('class').split(' ')[1];
	console.log('palavra1: ', palavra1);
	$('.box').not($this).addClass('clique2').removeClass('clique1');
});

$('body').on('click', '.clique2', function() {
	var $this = $(this);
	window.palavra2 = $this.attr('class').split(' ')[1];
	console.log('palavra2: ', palavra2);

	if(palavra1==palavra2){
		alert('certo');
		$('.box').addClass('clique1').removeClass('clique2');
		$('body').on('click', '.clique1'); 
	}else{
		alert('errado');
		$('.box').addClass('clique1').removeClass('clique2');
		$('body').on('click', '.clique1');
	}

});
}
</script>
</head>
<body>
<a href="#" class="clique1 outroClass">oi</a><br/>
<a href="javascript:comparar();">ativar</a>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Berkowitz, estou usando a última versão do jQuery

 

<div id="box1_1" class="box dupla1 clique1"></div>
<div id="box1_2" class="box dupla2 clique1"></div>
<div id="box1_3" class="box dupla3 clique1"></div>
<div id="box2_1" class="box dupla1 clique1"></div>
<div id="box2_2" class="box dupla2 clique1"></div>
<div id="box2_3" class="box dupla3 clique1"></div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcelo,

Agora entendi. No caso você precisa associar uma função a um determinado item na tela, desassociar quando necessário e depois associar novamente. Isso só será possível se você separar a função em um método próprio e "linká-la" no evento.

Fica assim:

 

<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script>
$(function() {
       $('body').on('click', '.clique1', compararC1);
	$('body').on('click', '.clique2', compararC2);
});
function compararC1(event){
var $this = $(this);
$('body').off('click', '.clique1', compararC1);
window.palavra1 = $this.attr('class').split(' ')[1];
console.log('palavra1: ', palavra1);
$('.box').not($this).addClass('clique2').removeClass('clique1');
}
function compararC2(event){
var $this = $(this);
window.palavra2 = $this.attr('class').split(' ')[1];
console.log('palavra2: ', palavra2);

if(palavra1==palavra2){
		alert('certo');
		$('.box').addClass('clique1').removeClass('clique2');

		$('body').on('click', '.clique1', compararC1);
}else{
		alert('errado');
		$('.box').addClass('clique1').removeClass('clique2');

		$('body').on('click', '.clique1', compararC1);
}
}
</script>
</head>
<body>
<div id="box1_1" class="box dupla1 clique1">dupla 1</div>
<div id="box1_2" class="box dupla2 clique1">dupla 2</div>
<div id="box1_3" class="box dupla3 clique1">dupla 3</div>
<div id="box1_4" class="box dupla1 clique1">dupla 1</div>
</body>
</html>

 

Da uma testada aí.

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao.

Você pode declarar essa variável fora do escopo da função. Assim conseguirá acessá-la de qualquer lugar.

Ex:

 

<script>
var a;
function f1() {
   var b = 2;
   a=1;
}
function f2() {
   f1();
   console.log(a,B);
}
</script>
<a href="javascript:f2();">Testar</a>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Falow!! :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.