Mục tiêuLàm cách nào để chuyển một biến theo giá trị sang một hàm javascript ẩn danh?
Tôi muốn chỉ định động việc xử lý sự kiện cho một số div trên các trang trong toàn bộ trang web.
Phương My
Im sử dụng jQuery để ràng buộc chức năng ẩn danh như xử lý cho các sự kiện div chọn.
Vấn đề
Mã lặp một loạt các tên div và url liên quan. Tên div được sử dụng để đặt mục tiêu ràng buộc tức là đính kèm trình xử lý sự kiện này vào sự kiện div này.
Trong khi trình xử lý sự kiện được liên kết thành công với từng sự kiện div, các hành động được kích hoạt bởi các trình xử lý sự kiện đó chỉ bao giờ nhắm mục tiêu mục cuối cùng trong mảng.
Vì vậy, ý tưởng là nếu người dùng di chuột qua một div nhất định, nó sẽ chạy một hoạt ảnh trượt ra cho div đó. Nhưng thay vào đó, di chuột qua div1 (rangeTabAll) sẽ kích hoạt một slide-out animation cho div4 (rangeTabThm). Điều này cũng đúng cho divs 2, 3, etc. Thứ tự là không quan trọng. Thay đổi các phần tử mảng xung quanh và các sự kiện sẽ luôn luôn nhắm mục tiêu phần tử cuối cùng trong mảng, div4.
Mã My - (Sử dụng jQuery)
var curTab, curDiv;
var inlineRangeNavUrls=[['rangeTabAll','range_all.html'],['rangeTabRem','range_remedial.html'],
['rangeTabGym','range_gym.html'],['rangeTabThm','range_thermal.html']];
for (var i=0;i<inlineRangeNavUrls.length;i++)
{
curTab=(inlineRangeNavUrls[i][0]).toString();
curDiv='#' + curTab;
if ($(curDiv).length)
{
$(curDiv).bind("mouseover", function(){showHideRangeSlidingTabs(curTab, true);});
$(curDiv).bind("mouseout", function(){showHideRangeSlidingTabs(curTab, false);});
}
}
Lý thuyết của tôi
tôi hoặc không nhìn thấy một lỗi cú pháp blindingly rõ ràng hoặc một đường chuyền của nó bởi sự cố tài liệu tham khảo. Ban đầu tôi đã có báo cáo kết quả sau đây để thiết lập giá trị của curTab:
curTab=inlineRangeNavUrls[i][0];
Vì vậy, khi vấn đề xảy ra tôi đã tìm thấy như tôi đã thay đổi (thông qua cho vòng lặp) tham chiếu đến curTab, tôi đã được trên thực tế thay đổi tham chiếu cho tất cả các trình xử lý sự kiện hàm ẩn danh trước đó với giá trị curTab mới .... đó là lý do tại sao trình xử lý sự kiện luôn nhắm mục tiêu đến div cuối cùng. Vì vậy, những gì tôi thực sự cần làm là vượt qua giá trị curTab cho trình xử lý sự kiện chức năng ẩn danh không phải là tham chiếu curTab đối tượng.
Vì vậy, tôi nghĩ:
curTab=(inlineRangeNavUrls[i][0]).toString();
sẽ khắc phục vấn đề, nhưng nó không. Cùng một thỏa thuận. Vì vậy, rõ ràng im thiếu một số chìa khóa, và có lẽ rất cơ bản, kiến thức về vấn đề này. Cảm ơn.
JavaScript luôn chuyển và gán theo giá trị. Câu hỏi của bạn không đối phó với việc đi qua chút nào; mà đúng hơn là với việc nắm bắt các biến bằng cách đóng. – newacct