Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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);quero analisar como estão as demais.. poste pelo menos mais 2 ou 3 funções..
você entende oque são clousures ?
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
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);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'
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.
(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.
mostre como está o seu arquivo real de funções.