Ir para conteúdo

POWERED BY:

Arquivado

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

-rafael-

variável global para funções jquery

Recommended Posts

ola a todos

 

estou usando um arquivo para colocar minhas funções personalizadas para o jquery

 

estou fazendo o seguinte:

 

 

(function($) {
//aqui escrevo as funções
$.funcao_tal = function ( parametros ) {
	blalblalbla
}
})(jQuery);

 

 

o problema é que tem algumas variáveis que gostaria de usar em todo o script como por exemplo o caminho para as requisiçoes ajax. Mas percebi que não consigo passar como global, tenho que declarar função por função a variável.

 

tentei isso mas não deu certo

 

(function($) {

var caminho = "/path/ajax/";

//aqui escrevo as funções
$.funcao_tal = function ( parametros ) {
	blalblalbla
}

})(jQuery);

 

 

isso aqui também não

 

var caminho = "/path/ajax/";
(function($) {

//aqui escrevo as funções
$.funcao_tal = function ( parametros ) {
	blalblalbla
}

})(jQuery);

 

 

exite uma outra forma???

 

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

mostre como está o seu arquivo real de funções.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Willian,

vou colocar apenas a primeira função, pois o arquivo é muito grande (320 linhas)

mas as demais (que contem ajax) são basicamente as mesmas.

o começo e fim do arquivo é exatamente isso.

 


(function($) {

$.ajax_time = function ( cont ) {

	var href = $('#js_caminho').val();

		$.ajax({
       		url     : href,
		cache   : false,
		success : function( response ){
			cont.html( response );
		}
	});

}

})(jQuery);

Compartilhar este post


Link para o post
Compartilhar em outros sites

quero analisar como estão as demais.. poste pelo menos mais 2 ou 3 funções..

 

você entende oque são clousures ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

então tá, rsss

 


(function($) {

$.ajax_time = function ( cont ) {

		var href = $('#js_caminho').val();

		$.ajax({
				url    	: href,
				cache   : false,
				success : function( response ){
						cont.html( response );
				}
		});

}

$.monta_box_tipo_mov = function () {

	var caminho	= $('#js_caminho').val();
	var href_combo = caminho + 'ajax/ajax_combox.php';

	var box_tipo_mov = $('#tipo_mov');

	// abrindo o ajax
	$.ajax({
		type   : "POST",
		cache  : false,
		url       : href_combo,
		success: function( response ){

			var data = $( response );
			box_tipo_mov.html( data );

		}
	});// /$.ajax({

}


$.monta_box_local_mov = function () {

	var caminho	= $('#js_caminho').val();
	var href_combo = caminho + 'ajax/ajax_combox.php';

	var box_local_mov = $('#local_mov');
	var id_tipo_mov = $('#tipo_mov').val();

	if ( id_tipo_mov == 0 || id_tipo_mov == '' ) {

		box_local_mov.html( '<option value="">Selecione o tipo de movimentação</option>' );

	} else {

		box_local_mov.html( '<option value="">Aguarde...</option>' );

		$.ajax({
			type   : "POST",
			cache  : false,
			url       : href_combo,
			success: function( response ){

				var data = $( response );

				box_local_mov.html( data );

			}

		});// /$.ajax({

	} // /if ( id_tipo_mov == 0 || id_tipo_mov == '' ) {

}

})(jQuery);

 

 

segue três funções que usam a mesma variável...

 

então, sobre closures, não faço nem ideia do que seja. nem ouvi falar.

 

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, então dá uma estudada, pois você está usando clousures e funções anonimas, mesmo achando que nunca ouviu falar =)

 

leitura:

http://wbruno.com.br/blog/2011/07/18/vixi-aprendi-jquery-mas-agora/

http://wbruno.com.br/blog/2011/04/04/nao-jquery-nao-aprenda-qualquer-framework-antes-de/

 

Sobre a sua dúvida, tente assim:

(function($) {
       $(document).ready(function(){
               var href = $('#js_caminho').val();
       });
       $.ajax_time = function ( cont ) {

                       $.ajax({
                                       url     : href,
                                       cache   : false,
                                       success : function( response ){
                                                       cont.html( response );
                                       }
                       });

       }

       $.monta_box_tipo_mov = function () {
               var href_combo = caminho + 'ajax/ajax_combox.php';

               var box_tipo_mov = $('#tipo_mov');

               // abrindo o ajax
               $.ajax({
                       type   : "POST",
                       cache  : false,
                       url       : href_combo,
                       success: function( response ){

                               var data = $( response );
                               box_tipo_mov.html( data );

                       }
               });// /$.ajax({

       }


       $.monta_box_local_mov = function () {
               var href_combo = caminho + 'ajax/ajax_combox.php';

               var box_local_mov = $('#local_mov');
               var id_tipo_mov = $('#tipo_mov').val();

               if ( id_tipo_mov == 0 || id_tipo_mov == '' ) {

                       box_local_mov.html( '<option value="">Selecione o tipo de movimentação</option>' );

               } else {

                       box_local_mov.html( '<option value="">Aguarde...</option>' );

                       $.ajax({
                               type   : "POST",
                               cache  : false,
                               url       : href_combo,
                               success: function( response ){

                                       var data = $( response );

                                       box_local_mov.html( data );

                               }

                       });// /$.ajax({

               } // /if ( id_tipo_mov == 0 || id_tipo_mov == '' ) {

       }

})(jQuery);

Compartilhar este post


Link para o post
Compartilhar em outros sites

nossa :natalw00t:

 

e eu achando q é coisa de outro mundo... e na verdade é kkkk :natallaugh:

 

mas vou dar uma estudada no assunto

 

 

quanto a solução q você me passou, ela nao funcionou

 

veja o codigo

 

(function($) {
        $(document).ready(function(){
                var href = $('#js_caminho').val();
        });
        $.ajax_time = function ( cont ) {

                       $.ajax({
                                        url     : href,
                                        cache   : false,
                                        success : function( response ){
                                                        cont.html( response );
                                        }
                        });

       }

        $.monta_box_tipo_mov = function () {
                var href_combo = href + 'ajax/ajax_combox.php';

               var box_tipo_mov = $('#tipo_mov');

               // abrindo o ajax
                $.ajax({
                        type   : "POST",
                        cache  : false,
                        url       : href_combo,
                        success: function( response ){

                               var data = $( response );
                                box_tipo_mov.html( data );

                       }
                });// /$.ajax({

       }


       $.monta_box_local_mov = function () {
                var href_combo = href + 'ajax/ajax_combox.php';

               var box_local_mov = $('#local_mov');
                var id_tipo_mov = $('#tipo_mov').val();

               if ( id_tipo_mov == 0 || id_tipo_mov == '' ) {

                       box_local_mov.html( '<option value="">Selecione o tipo de movimentação</option>' );

               } else {

                       box_local_mov.html( '<option value="">Aguarde...</option>' );

                       $.ajax({
                                type   : "POST",
                                cache  : false,
                                url       : href_combo,
                                success: function( response ){

                                       var data = $( response );

                                       box_local_mov.html( data );

                               }

                       });// /$.ajax({

               } // /if ( id_tipo_mov == 0 || id_tipo_mov == '' ) {

       }

})(jQuery);

 

na depuração do IE diz que 'href nao esta definido'

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

a primeira solução que me ocorreu agora, foi enviar como parâmetro

 

         $(document).ready(function(){
                var href = $('#js_caminho').val();
        });
        $.ajax_time = function ( cont, href ) {

 

pois pelo visto, escopo da function que extende o jQuery isola dos demais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

(function($) {
   var href;

   $(document).ready(function() {
       href = $('#js_caminho').val();
   });

   $.ajax_time = function(cont) {
       console.log('$.ajax_time', href);
       $.ajax({
           url: href,
           cache: false,
           success: function(response) {
               cont.html(response);
           }
       });

   }

   //...

})(jQuery);


$(function(){
  $.ajax_time();
});

 

Veja se assim funciona. Preste atenção ao console do firebug, deverá aparecer o valor da variavel lá. Não se esqueça de trocar onde tem a variavel caminho por href.

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.