Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jquery - Grab Variable from Another Function

I have two functions on my page. I am trying to find a way to access a variable in function 1 inside function 2:

$(function() {
    $('a[id=1]').live("click", function(event) {
        event.preventDefault();
        var Var1 = "something1";
       });
});

$(function() {
    $('a[id=2]').live("click", function(event) {
        event.preventDefault();
        var Var2 = event.var1;
       });
});

So I am sure my above is incorrect but you can see how in function 2 I am trying to grab a variable from the first function.

Is there a way I can do this? I don't know why, but I keep thinking it has something to do with the event.var1 or the event functionality.

like image 440
user982853 Avatar asked Mar 12 '12 23:03

user982853


2 Answers

You need to declare the variable outside both functions, in a scope they can both access. I suggest combining your two document ready handlers into a single function and declaring the variable there:

$(function() {
    var var1;  // may want to assign a default

    $('a[id=1]').live("click", function(event) {
        event.preventDefault();
        var1 = "something1";
       });

    $('a[id=2]').live("click", function(event) {
        event.preventDefault();
        var var2 = var1;
       });
});

Or you could make the variable a global if you need to access it from other places too.

Note that the two click events have nothing to do with each other so they certainly don't share event data. Also, a click on the second anchor may occur before a click on the first, so you may want to give var1 a default value and/or test for undefined befor using it inside the second click handler.

(Also I've changed Var1 to var1 because the JS convention is to start variable names with a lowercase letter - you don't have to follow the convention, but I'd recommend it.)

like image 136
nnnnnn Avatar answered Oct 22 '22 10:10

nnnnnn


Each event are will be unique from each click, you can store your result in a global variable in the window object and take care of the order of the events

$(function() {
$('a[id=1]').on("click", function(event) {
    event.preventDefault();
    window.Var1 = "something1";
   });
});

$(function() {
$('a[id=2]').on("click", function(event) {
    event.preventDefault();
    var Var2 = window.Var1;
   });
});
like image 20
Pascal Piché Avatar answered Oct 22 '22 12:10

Pascal Piché