2012-06-18 41 views
7

Tôi có một thanh công cụ giao diện người dùng jQuery, khi bạn bấm vào một ngày, hãy xóa băm URL của tôi thành # và không thay đổi ngày trong hộp văn bản.Xem tất cả sự kiện dom cho một phần tử

Tôi giả sử có một số tiện ích JavaScript khác ở đâu đó có một số loại sự kiện được ủy quyền cũng được gọi, ném lỗi và tiêu diệt trình xử lý jquery.

Làm cách nào để xem qua và xem tất cả các sự kiện được ủy quyền phù hợp với yếu tố dom này.

+1

Dunno về điều đó nhưng bạn có thể mở công cụ Dev Tools của Chrome, chuyển đến tab Scripts và đặt điểm ngắt trong mã datepicker và bước qua mã JS để xem những gì được thực thi. – sachleen

Trả lời

10

công cụ dev của Chrome có thể giúp với thứ là:

  1. Point Chrome tại trang
  2. Kích chuột phải vào ngày trong datepicker jQuery UI và chọn "kiểm tra nguyên tố".
  3. Ở phía bên tay phải, có một accordian với nhiều thứ khác nhau. Gần phía dưới cùng là "Người nghe sự kiện". (Phiên bản hiện tại của công cụ dev của Chrome rất thông minh về điều này, bao gồm truy vấn chuỗi xử lý của jQuery.)
  4. Mở rộng mục cây "Event Listeners" và bạn sẽ thấy danh sách các sự kiện nối liên quan đến yếu tố đó, ngay cả khi trình xử lý không được đặt cụ thể trên thành phần. (Ví dụ, nếu bạn đã làm điều này với nút upvote trên câu hỏi, bạn sẽ thấy rằng click được nối cả hai cho a.vote-up-offdocument.) Vì vậy, bạn có thể đá xung quanh những người xem những gì xử lý trực tiếp và ủy nhiệm liên quan đến sự kiện đó cho rằng thành phần.

Ngoài ra, bạn có thể sử dụng phiên bản chưa được rút gọn của jQuery và đi qua công cụ sự kiện khi bạn nhấp vào ngày trong trình ghi ngày tháng.

Và tất nhiên, Gabe's shown cách bạn có thể có được trình xử lý cụ thể cho jQuery thông qua dữ liệu jQuery events không có giấy tờ. (Điều đó sẽ không hiển thị cho bạn các trình xử lý được ủy quyền (trừ khi bạn đi bộ cây tổ tiên) và sẽ không hiển thị cho bạn các trình xử lý không phải jQuery có thể được đính kèm, nhưng nó vẫn là những thứ khá hữu ích.)

+0

Bạn là một vị thần trong số những người đàn ông, TJ. Cảm ơn bạn như mọi khi. –

+0

@AdamRackis: LOL Đừng lo lắng, hy vọng điều đó sẽ giúp ích cho bạn. –

4

Với jQuery, bạn có thể xem tất cả các sự kiện thành phần bằng cách truy cập vào khóa events của dữ liệu.

jsFiddle

Ví dụ:

HTML

<input type="text" id="myelement" />​ 

JS

$(function() { 


    var myelement = $('#myelement'); 
    myelement.click(function() { 

     console.log('anonymous event'); 

    }); 

    myelement.click(anotherEvent); 
    myelement.change(anotherEvent); 

    var events = myelement.data('events'); 

    console.log('Number of click events:' + events.click.length); 
    console.log('Number of change events:' + events.change.length); 

}); 

function anotherEvent(){ 
    console.log('another event'); 
} 
+0

Điều đó cũng sẽ nhận các sự kiện được ủy quyền? tức là '$ (tài liệu) .on (" click "," a ", function() {...});' if '# myelement' là một anchor, nó sẽ hiển thị trình xử lý này? –

+0

@AdamRackis: Không, nó sẽ không. Nó sẽ chỉ hiển thị cho bạn các trình xử lý trực tiếp, không phải trình xử lý tiếp tục lên cây cũng có thể được gọi: http://jsbin.com/ujipuz Tất nhiên, điều đó không có nghĩa là bạn không thể đi bộ tổ tiên của phần tử và lặp lại quá trình cho mỗi người trong số họ, mà sẽ cung cấp cho bạn bức tranh đầy đủ.+1 để Gabe –

+0

Tôi hiểu lầm, nghĩ rằng bạn đang tìm kiếm giải pháp lập trình hơn là công cụ gỡ lỗi :) – Gabe

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