2013-03-27 28 views
5

Gần đây tôi đã cập nhật một trong các dự án của tôi lên jQuery 1.9.1 và tôi không thể sử dụng phương thức $.event.handle.apply() nữa. Tôi đã tìm kiếm và tìm thấy, rằng tôi có thể đặt jquery.migrate.js. Tôi chỉ muốn xác nhận nếu có bất kỳ lựa chọn nào khác? Google-fu là không ở đây ...

--EDIT-- Đây là mã (không phải của tôi ... sao chép từ các plugin) đó gây ra vấn đề này ...

// Event handler function 
function mouseWheelHandler(event) 
{ 
    var sentEvent = event || window.event, 
     orgEvent = sentEvent.originalEvent || sentEvent, 
     args = [].slice.call(arguments, 1), 
     delta = 0, 
     deltaX = 0, 
     deltaY = 0; 
     event = $.event.fix(orgEvent); 
     event.type = "mousewheel"; 

    // Old school scrollwheel delta 
    if (orgEvent.wheelDelta) { delta = orgEvent.wheelDelta/120; } 
    if (orgEvent.detail ) { delta = -orgEvent.detail/3; } 

    // New school multidimensional scroll (touchpads) deltas 
    deltaY = delta; 

    // Gecko 
    if (orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS) { 
     deltaY = 0; 
     deltaX = -1*delta; 
    } 

    // Webkit 
    if (orgEvent.wheelDeltaY !== undefined) { deltaY = orgEvent.wheelDeltaY/120; } 
    if (orgEvent.wheelDeltaX !== undefined) { deltaX = -1*orgEvent.wheelDeltaX/120; } 

    // Add event and delta to the front of the arguments 
    args.unshift(event, delta, deltaX, deltaY); 

    return $.event.handle.apply(this, args); 
} 
+2

Có vẻ như bạn đang sử dụng thứ gì đó không có giấy tờ và nội bộ, và nó đã thay đổi. Chúng tôi có thể giúp bạn nếu bạn nói bạn muốn làm gì (vì chúng tôi sẽ không quen thuộc với nội dung không có giấy tờ và nội bộ mà bạn đã sử dụng). –

+0

Có lẽ bạn muốn '$(). Trigger' –

+0

@TJCrowder .. Cảm ơn bạn đã trả lời ... Xin hãy xem các chỉnh sửa .. – Khan

Trả lời

0

Như bạn sẽ thấy here plugin này không còn được phát triển nữa. Nhưng nó kết thúc cuộc thảo luận này, bạn có một cách để giải quyết một số vấn đề:

On line 642 file plugin js Tôi có điều này:

event.type = 'lastclick'; 
$.event.handle.apply(Me, [event,clicks]) 

Tôi chỉ thay đổi hai điều này:

event.type = 'lastclick'; 
event.isPropagationStopped = function() { return false }; 
$.event.handle.apply(Me, [event,clicks]) 

Vì vậy, tôi vừa mới xóa lại isPropagationStopped và nhẹ nhàng nó bắt đầu hoạt động tốt!

Tôi hy vọng điều này sẽ giúp bạn.

+0

Bạn đã thử nghiệm phương pháp này trong 1.9.1 chưa? –

+0

chưa nhưng nó đang được thử nghiệm. và đối với tôi, kích hoạt $(). là một cách tiếp cận tốt hơn –

+0

Đây là giải pháp cũ. Tôi yêu cầu JQuery 1.9.1 và $ .event.handle.apply được xóa theo tài liệu jquers. – Khan

-3

thay đổi dòng này:

return $.event.handle.apply(this, args);

tới:

return jQuery.event.handle.apply(this, args);

+2

Không hoạt động ... và điều này không tạo ra sự khác biệt ... – Khan

7

hoặc bạn có thể thử:

$.event.dispatch.call(obj, event);

+2

Tôi tìm thấy điều này trong jQuery 1.8.3: 'jQuery.event.handle = jQuery.event.dispatch;' – RPNinja

0

i Tìm thấy giải pháp ở đây, tôi kiểm tra nó và nó hoạt động tốt
Get mouse wheel events in jQuery?

$(document).ready(function(){ 
    $('#foo').bind('mousewheel', function(e){ 
     if(e.originalEvent.wheelDelta /120 > 0) { 
      $(this).text('scrolling up !'); 
     } 
     else{ 
      $(this).text('scrolling down !'); 
     } 
    }); 
}); 
3

Tôi tìm thấy chủ đề này trong khi tìm kiếm giải pháp cho cuộn vô hạn không hoạt động với jQuery 1.9. * Và gây ra lỗi giống như từ bài đăng gốc.

Nhận xét của JQNinja cung cấp giải pháp phù hợp: thay đổi cá thể đơn lẻ $.event.handle.apply thành $.event.dispatch.apply trong bản sửa lỗi plugin Cuộn vô hạn. Tôi giả định rằng nó cũng sẽ khắc phục vấn đề của người đăng ban đầu.

Tôi hiểu rằng việc sửa đổi plugin không phải là lý tưởng, nhưng vì nó không còn được duy trì tại thời điểm viết nên tôi có thể không phải lo lắng về bản cập nhật - và giả sử rằng, nên duy trì tiếp tục, vấn đề này cũng sẽ được khắc phục!

+1

Cảm ơn bạn đã trả lời ... Nhưng tôi không còn làm việc này nữa ... vì vậy tôi không thể kiểm tra xem nó có hoạt động không ... Tôi không biết liệu tôi có nên để câu hỏi này như thế, hay đánh dấu nó là bị đóng cửa không? !! – Khan

+1

đã thử điều này trong một plugin khác - đã làm các trick có quá. Tôi chỉ muốn tôi biết những gì nó có nghĩa là :-) – commonpike