2012-02-07 16 views
7

Tôi đang tìm kiếm tại các plugin js của bootstrap, cụ thể là bootstrap-typeahead.js.I không thể tìm ra cách yếu tố được chọn.Mã nguồn của trình bổ sung Bootstrap js trên ('focus.typeahead.data-api', '[data-provide = "typeahead"]', hàm (e) hoạt động?

$('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) 

tôi biết yếu tố thực sự là lựa chọn bởi các phần dữ liệu cung cấp, nhưng khi tôi xem qua jquery.js, tôi không thể tìm ra cách nó được thực hiện. Từ phần .on() tôi đã đi đến event.add() phần sau đó tôi trở nên bối rối hơn. Có ai nói cho tôi biết cách thực hiện?

Tôi biết những gì, nhưng muốn biết cách. Phần tử được chọn như thế nào? Tôi cần thêm ý tưởng ở đây.

Trả lời

2

Đối số đầu tiên của phương pháp on() là sự kiện, trong trường hợp này nó được namespaced - sự kiện này là focus trong typeahead.data-api namespace

Đối số thứ hai là một bộ lọc-selector cho các mục đích sự kiện đoàn. Xử lý sự kiện thực tế được gắn liền với các yếu tố body, nhưng các chức năng xử lý chỉ được thực hiện cho các sự kiện đến từ các yếu tố với data-provide thuộc tính bằng giá trị của typeahead

+0

Cảm ơn bạn đã trả lời.Tôi hiểu ý tưởng chính.Nhưng tôi không thể thấy phần tử thực sự được chọn bởi thuộc tính data-provide.I có vấn đề khi đọc mã nguồn jquery.I đã chuyển đến $ .event.add: function (elem, các loại, xử lý, dữ liệu, chọn), sau đó bị mất ở đây. Tôi cần một số giải thích thêm. – Gnijuohz

+1

Có thể đó là nơi bạn đang đi sai - phần tử không được chọn với thuộc tính 'data-provide'. Phần tử được chọn trong ví dụ này là 'body'. Bất kỳ sự kiện nào trong không gian tên được chỉ định đến phần tử 'body' đều được kiểm tra xem nó có thuộc tính' data-provide' không và nếu nó có giá trị là 'typeahead' hay không. Nếu vậy, trình xử lý được thực hiện. Hãy thử nhìn vào mã nguồn cho 'on' ... – danwellman

+0

Trên thực tế trên các cuộc gọi event.add đó là lý do tại sao tôi đã đến đó. Tôi sẽ nhìn vào nguồn again.Thanks một lần nữa! – Gnijuohz

2

Nếu bạn đang tìm kiếm câu trả lời cho tại sao (Như tôi đã. tại sao ai đó sẽ đăng ký một xử lý sự kiện trọng tâm vụng về như vậy.), lý do là html thuần túy dựa khởi của sự kiểm soát typeahead, vì nó được mô tả trong documentation HERE:

<input type="text" data-provide="typeahead"> 

Nodes với thuộc tính data-provide="typeahead" được kích hoạt như typeaheads khi tài liệu nhận được tập trung ...

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