Tôi đang cố gắng sử dụng jQuery bên trong phần mở rộng của Firefox và thực sự muốn sử dụng jQuery để thao tác DOM của trang hiện tại, trái ngược với ngữ cảnh của tệp XUL. Vì vậy, tôi tải jQuery trong tệp XUL của tôi và chuyển nó cho một số tập lệnh của tôi trong một hộp cát (sử dụng trình biên dịch mở rộng Greasemonkey http://arantius.com/misc/greasemonkey/script-compiler). Vì jQuery không được nạp với DOM trang, tôi muốn đặt ngữ cảnh chọn của nó thành DOM trang thay vì luôn chuyển nó vào các cuộc gọi jQuery.Ghi đè ngữ cảnh chọn jQuery mặc định
Tôi đã làm theo giải pháp tại How to use jQuery in Firefox Extension và nó gần như đạt được những gì tôi muốn.
jQuery.noConflict();
$ = function(selector,context){ return new jQuery.fn.init(selector,context||example.doc); };
$.fn = $.prototype = jQuery.fn;
Tôi có thể thực hiện cuộc gọi đến hàm jQuery() và DOM trang sẽ được sử dụng làm ngữ cảnh. Tuy nhiên, tôi không thể sử dụng các hàm như jQuery.trim vì chúng không được định nghĩa.
Tôi nghĩ dòng này từ dung dịch
$.fn = $.prototype = jQuery.fn;
sẽ cho phép đối tượng jQuery riêng tôi thừa hưởng tất cả các đặc tính nguyên mẫu jQuery, nhưng nó dường như không.
Cho đối tượng jQuery vanilla, làm thế nào để xác định lại nó để sử dụng một phần tử nhất định làm ngữ cảnh chọn, trong khi vẫn giữ lại tất cả các hàm jQuery?
Tôi hy vọng nó làm việc cho bạn. Khi tôi cố gắng sử dụng jQuery trong một phần mở rộng và tải nó trong một lớp phủ XUL, nó bằng cách nào đó đã phá vỡ lớp phủ của các plugin khác như thanh công cụ Webdeveloper. Có lẽ nó hoạt động tốt hơn bây giờ. Chỉ cần xem ra cho điều này! –