it-swarm-vi.com

Vấn đề phổ biến nhất và chưa được giải quyết khi sử dụng jquery trong tiện ích mở rộng J2.5

Trong j Joomla 2.5 mọi người đang đặt vấn đề về jquery khi có nhiều phần mở rộng khác nhau trong một trang. Câu hỏi đặt ra là với tư cách là nhà phát triển tiện ích mở rộng, làm thế nào để chúng tôi sử dụng jquery trong tiện ích mở rộng j2.5 ??, xem xét rằng các tiện ích mở rộng khác cũng tuyên bố tệp jquery và mã không có xung đột và có một số nhà phát triển không quan tâm đến nó hoặc không biết và sử dụng jquery theo cách riêng của họ vì vậy jquery không hoạt động trong phần mở rộng.

Bây giờ tôi nên kiểm tra jfactory-> getapplication-> get ('jquery') nhưng nó không đủ như tôi đã đề cập ở trên. Vì vậy, trong số những cách sau đây là cách sử dụng đúng tập tin jquery (như tôi đã nói ở trên tại sao tôi nên khai báo) -

  1. nc_mode = jQuery.noConflict (); nc_mode (hàm () {......});
  2. jQuery.noConflict (); jQuery (hàm () {....});
  3. Chỉ sử dụng jQuery - jQuery (function () {....});

Rất cần thiết để giải quyết nó đúng cách vì việc sử dụng jquery rất phổ biến trong các tiện ích mở rộng.

1
dev-m

noConflict được sử dụng để bí danh được sử dụng khi khai báo các hàm không xung đột với các thư viện khác. Joomla sử dụng Mootools (dần dần bị loại bỏ khỏi lõi) có vấn đề xung đột lớn với jQuery vì cả hai đều là bí danh $ Để khai báo các hàm như vậy:

$('button').click(function() { ...

Để hiểu rõ hơn và sâu hơn về noConflict, hãy đọc những điều sau đây cũng sẽ cho bạn ví dụ về cách sử dụng:

http://api.jquery.com/jquery.noconflict/

Đối với việc nhập jQuery trong các tiện ích mở rộng, đây là một chút khó khăn. Đã thấy nhận xét của bạn về câu trả lời trước đây của tôi, bạn hoàn toàn biết rằng có nhiều cách khác nhau để nhập jQuery. Đảm bảo chỉ có 1 phiên bản của nó được nhập là có thể nhưng người ta có thể gặp phải một số vấn đề.

Khi làm điều này cho trang web của riêng bạn, tôi chỉ đơn giản khuyên bạn nên sử dụng jQuery Easy đó là một plugin. Một tính năng chính là nó loại bỏ tất cả các phiên bản khác của jQuery để nó không được nhập nhiều lần.

Khi viết phần mở rộng của riêng bạn mà bạn muốn cung cấp cho công chúng, với tư cách là nhà phát triển, nghiên cứu về vấn đề này là điều đầu tiên nên được thực hiện. Xác định xem jQuery đã được tải chưa và sau đó nhập nó chỉ hoạt động nếu các tiện ích mở rộng khác đang sử dụng cùng phương thức này như bạn đã đề cập trong câu hỏi của mình. Vấn đề là không có gì là hoàn hảo và bạn sẽ luôn gặp phải các vấn đề trong đó một số phần mở rộng được viết chính xác và các phần mở rộng khác thì không, do đó sẽ luôn có khả năng xảy ra xung đột. Cách duy nhất tôi thực sự có thể nghĩ để tránh điều này là bằng cách xem mã cho jQuery Easy và xem cách họ loại bỏ các phiên bản khác của jQuery và cố gắng tự làm điều đó.

Cập nhật

Bạn không phải sử dụng jQuery làm bí danh cho mọi thứ. Tất nhiên chúng ta đều quen sử dụng $ Nhưng thực tế jQuery là bí danh mặc định. Vì vậy, cách tốt để đi xung quanh mọi thứ là gói gọn nó như vậy:

jQuery.noConflict();

jQuery(document).ready(function($) {
    $("element").hide();
    // more code using $
});

Từ đây trở đi, bạn có thể tiếp tục sử dụng $ Làm bí danh trong phạm vi địa phương.

2
Lodder