2009-07-20 31 views
27

Tôi hiện đang sử dụng jTemplates để tạo một bảng khá lớn trên máy khách, mỗi hàng có một nút sẽ mở ra một hộp thoại Giao diện người dùng jQuery. Tuy nhiên, khi tôi cuộn xuống trang và nhấp vào một trong các nút đó, hộp thoại jQuery sẽ mở, nhưng vị trí cuộn bị mất và trang sẽ nhảy trở lại đầu trang (với ngăn chặn và hộp thoại thực tế hiển thị trên màn hình). Có ai nhìn thấy hoặc biết những gì có thể gây ra vấn đề này?Làm cách nào để ngăn việc cuộn lên đầu trang khi xuất hiện Hộp thoại Giao diện người dùng jQuery?

Cảm ơn.

+0

Thấy điều này trước nhưng sau đó tôi đã sử dụng plugin sau để đảm bảo vị trí cuộn không bị mất http://plugins.jquery.com/project/ScrollTo –

Trả lời

66

Bạn đang sử dụng thẻ liên kết để triển khai "nút" bật ra hộp thoại? Nếu vậy, bạn sẽ muốn trình xử lý nhấp chuột mở hộp thoại để trả về false để hành động mặc định của thẻ neo không được gọi. Nếu bạn đang sử dụng một nút, bạn cũng cần phải chắc chắn rằng nó không gửi (bằng cách trả về false từ trình xử lý) và hoàn toàn làm mới trang.

Ví dụ,

$('a.closeButton').click(function() { 
    $('#dialog').dialog('open'); 
    return false; 
}); 


<a class='closeButton'>Close</a> 
+1

Tôi đã gặp vấn đề tương tự khi sử dụng angularjs và sau khi lãng phí một vài giờ tìm thấy thuộc tính href nên tránh khi sử dụng [ng-click] (http://docs.angularjs.org/api/ng.directive:ngClick). – Ritesh

+0

@Ritesh có thực sự không cần cho nó ở đây anyway. Tôi đã xóa. – tvanfosson

+0

ok. Nếu bạn loại bỏ thuộc tính href thì con trỏ chuột sẽ không hiển thị và bạn có thể cần phải thực hiện một số kiểu dáng. Nó không phải là một vấn đề trong trường hợp của angularjs, mà xử lý nó tự động. – Ritesh

5

thay đổi mã của bạn như thế này

$('a.closeButton').click(function(e) { 
    e.preventDefault(); 
    $('#dialog').dialog('open'); 
}); 
+0

Tôi sử dụng chúng để tải nội dung qua ajax và gặp vấn đề tương tự. Khi tôi được cuộn xuống một trang và mở một hộp thoại, sau đó đóng lại, trang sẽ 'nhảy' trở lại đầu trang. Các plugin scrollTo được tham gia nhiều hơn tôi cần thiết, ở trên làm việc hoàn hảo. –

+0

Phát ngay! Nó đã được mặc định là liên kết! –

-2

Bạn có thể thử:

scrollTo(0, jQuery("body")); 
10

Nếu nút của bạn làm việc với một thẻ html neo với href="#" thay thế ví dụ: href="javascript:;" hoặc bất kỳ phương pháp nào khác mà bạn sử dụng để tắt href. Lý do tại sao việc di chuyển xảy ra là vì href="#" cuộn lên đầu trang của bạn.

+0

Đây là vấn đề của tôi. Tôi thực sự vừa xóa 'href'. Cảm ơn! –

Các vấn đề liên quan