2012-03-12 32 views
7

Tôi có hai chức năng trên trang của mình. Tôi cố gắng để tìm thấy một cách để truy cập vào một biến trong chức năng 1 trong chức năng 2:Biến Jquery - Lấy từ một chức năng khác

$(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; 
     }); 
}); 

Vì vậy, tôi chắc chắn ở trên của tôi là không chính xác nhưng bạn có thể thấy trong chức năng 2 Tôi cố gắng để lấy một biến từ chức năng đầu tiên.

Có cách nào tôi có thể thực hiện việc này không? Tôi không biết tại sao, nhưng tôi tiếp tục nghĩ rằng nó có liên quan đến event.var1 hoặc chức năng sự kiện.

+1

Sự kiện nhấp chuột thứ hai không có gì liên quan đến sự kiện của nhấp chuột đầu tiên. – epascarello

+0

Vì vậy, để xác nhận, bạn đang thiết lập một biến với một cú nhấp chuột, và sử dụng nó với nhấp chuột thứ hai? –

Trả lời

12

Bạn cần khai báo biến bên ngoài cả hai hàm, trong phạm vi mà cả hai có thể truy cập. Tôi đề nghị kết hợp hai tài liệu xử lý sẵn sàng của bạn thành một chức năng duy nhất và khai báo biến có:

$(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; 
     }); 
}); 

Hoặc bạn có thể để biến đó là toàn cầu nếu bạn cần phải truy cập nó từ nơi khác quá.

Lưu ý rằng hai sự kiện nhấp chuột không liên quan gì đến nhau nên chúng chắc chắn không chia sẻ dữ liệu sự kiện. Ngoài ra, một cú nhấp chuột vào neo thứ hai có thể xảy ra trước khi nhấp chuột vào lần đầu tiên, vì vậy bạn có thể muốn cung cấp cho var1 giá trị mặc định và/hoặc kiểm tra cho undefined trước khi sử dụng nó trong trình xử lý nhấp chuột thứ hai.

(Ngoài ra tôi đã thay đổi Var1-var1 vì ước JS là bắt đầu tên biến với một chữ cái thường - bạn không phải làm theo quy ước, nhưng tôi khuyên bạn nên nó.)

2

Mỗi sự kiện được sẽ là duy nhất từ ​​mỗi nhấp chuột, bạn có thể lưu trữ kết quả của bạn trong một biến toàn cầu trong đối tượng cửa sổ và chăm sóc theo thứ tự của các sự kiện

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

});

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

});