Làm thế nào để vượt qua chức năng a_href = $(this).attr('href');
giá trị cho toàn cầu a_href
, hãy a_href="home"
jQuery làm biến toàn cầu
Trả lời
Mã của bạn trông tốt, ngoại trừ khả năng rằng nếu biến tuyên bố là bên trong một xử lý đọc dom sau đó nó sẽ không phải là một biến toàn cầu ... nó sẽ là một biến đóng cửa
jQuery(function(){
//here it is a closure variable
var a_href;
$('sth a').on('click', function(e){
a_href = $(this).attr('href');
console.log(a_href);
//output is "home"
e.preventDefault();
}
})
Để thực hiện các biến toàn cầu một giải pháp, là để khai báo biến trong phạm vi toàn cầu
var a_href;
jQuery(function(){
$('sth a').on('click', function(e){
a_href = $(this).attr('href');
console.log(a_href);
//output is "home"
e.preventDefault();
}
})
khác là để thiết lập các biến như là một thuộc tính của đối tượng cửa sổ
window.a_href = $(this).attr('href')
Tại sao giao diện điều khiển in ấn undefined
Bạn nhận được kết quả là undefined
bởi vì mặc dù biến được khai báo, bạn không phải là initia lized nó với một giá trị, giá trị của biến được thiết lập chỉ sau khi các yếu tố a
được nhấp cho đến thời điểm đó biến sẽ có giá trị undefined
. Nếu bạn không khai báo biến nó sẽ ném một ReferenceError
Cảm ơn một rất nhiều, sẽ đánh dấu nó :-) – olo
Tôi biết điều này là cũ, nhưng người đàn ông này đã giúp tôi ra ngoài. Cảm ơn –
đặt biến trên cửa sổ:
window.a_href = a_href;
Bạn có thể tránh khai báo biến toàn cục bằng cách thêm chúng trực tiếp đến đối tượng toàn cầu:
(function(global) {
...
global.varName = someValue;
...
}(this));
Một nhược điểm của phương pháp này là globa.varName sẽ không tồn tại cho đến khi dòng mã được thực hiện, nhưng có thể dễ dàng làm việc xung quanh. Bạn cũng có thể xem xét một kiến trúc ứng dụng trong đó các hình cầu như vậy được giữ trong một bao đóng chung cho tất cả các chức năng cần chúng, hoặc như các thuộc tính của một đối tượng lưu trữ dữ liệu thích hợp có thể truy cập.
Vâng, có vẻ khá nhiều. – Ryan
Nó sẽ hoạt động như bạn mong đợi. – PSL
chỉ có vấn đề là nếu 'var a_href' là bên trong một xử lý sẵn sàng dom ... biến mush tuyên bố được trong không gian toàn cầu hoặc sử dụng' window.a_href = $ (this) .attr ('href') ' –