2012-02-16 19 views
9

Tôi đang cố gắng sử dụng các sự kiện di động jQuery mà không cần phần còn lại của jQuery mobile.Mở rộng jQuery's .on() để làm việc với các sự kiện chạm trên thiết bị di động

https://github.com/jvduf/jquery-mobile-events/blob/master/jquery.mobile.events.js

Đó đoạn mã cho phép họ tất cả, và hoạt động tốt, nhưng không phải với các xử lý sự kiện .Trên(). Ví dụ:

$('a').on('tap',function(){ 
    console.log('Hi there!'); 
}); 

Tuy nhiên, nó hoạt động với .live(), nhưng hiện tại bị khấu hao.

Vì vậy, câu hỏi của tôi; có cách nào để mở rộng hàm .on() để bao gồm sự kiện nhấn và các sự kiện khác không? Danh mục đầy đủ dưới đây:

  • touchstart
  • touchmove
  • touchend
  • orientationchange
  • tap
  • taphold
  • swipe
  • swipeleft
  • swiperight
  • scrollstart
  • scrollstop

Cảm ơn :)

+0

Bộ chọn cho 'on()' cần phải là cha mẹ ... đọc trợ giúp cho on() nó rất đơn giản ... – ManseUK

+0

Trích xuất nguội, nhưng làm thế nào cập nhật là nó? Suy nghĩ 11 tháng tuổi là khá cũ vào thời điểm này, là bất cứ ai duy trì tập tin này? – rball

Trả lời

9

Tuy nhiên nó không làm việc với .live(), nhưng mà bây giờ được trích khấu hao.

Vì vậy, tôi đảm nhận rằng bạn muốn sử dụng ủy quyền sự kiện để bảo toàn các sự kiện đó trên các yếu tố được thay thế. Điều đó có nghĩa rằng đây:

$('a').on('tap',function() { 
    console.log('Hi there!'); 
}); 

sẽ cần phải thay đổi một cái gì đó như:

$(document).on('tap', 'a', function() { 
    console.log('Hi there!'); 
}); 

để cho nó cư xử giống như $("a").live("tap", ...

+1

Tôi biết điều này sẽ là một cái gì đó cơ bản, nhìn chằm chằm vào màn hình của tôi quá lâu có lẽ! Cảm ơn rất nhiều :) – will

+1

Tại sao không thể sử dụng chức năng 'bật' trên một phần tử, như trong đoạn đầu tiên? Tôi chỉ muốn đính kèm các trình xử lý trên các phần tử nhất định, chứ không phải trên toàn bộ tài liệu. –

+0

@MisterSmith đồng ý. – Swordfish0321

0

Có lẽ nó nên được tốt hơn để mở rộng Mã sự kiện JQuery dành cho thiết bị di động và máy tính để bàn.

Một cách để thực hiện việc này là sử dụng plugin jQuery vmouse (chuột ảo).

Từ vmouse cắm bình luận:

// Plugin này là một thử nghiệm cho abstracting đi các liên lạc và chuột
// sự kiện để các nhà phát triển không cần phải lo lắng về những phương pháp đầu vào
// thiết bị tài liệu của họ được tải lên trên bộ phận hỗ trợ.
//
// Ý tưởng ở đây là để cho phép các nhà phát triển để đăng ký người nghe cho
// sự kiện chuột cơ bản, chẳng hạn như mousedown, MouseMove, mouseup, và nhấp chuột,
// và các plugin sẽ chăm sóc đăng ký đúng người nghe
// đằng sau hậu trường để gọi người nghe ở thời điểm nhanh nhất có thể
// cho thiết bị đó, trong khi vẫn giữ lại thứ tự bắn sự kiện trong
// môi trường chuột truyền thống, nên nhiều trình xử lý được đăng ký
// trên cùng một yếu tố cho các sự kiện khác nhau.
//
// Phiên bản hiện tại cho thấy nhiều sự kiện ảo sau để jQuery phương pháp ràng buộc:
// "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel"

Đối với một lời giải thích tốt hơn, xem https://coderwall.com/p/bdxjzg

vmouse plugin: https://github.com/jquery/jquery-mobile/blob/master/js/jquery.mobile.vmouse.js

Cũng xem liên kết này về trạng thái hiện tại của (chạm) sự kiện: http://blogs.adobe.com/adobeandjquery/2011/03/07/the-current-state-of-touch-events/

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