2009-09-09 29 views
15

Nếu một trang có cả JQuery và Prototype thì tôi đã có xung đột. Có một tùy chọn để vô hiệu hóa $ sign cho JQuery vì vậy không có xung đột nhưng, tôi phải sử dụng từ khóa JQuery thay vì $.Làm thế nào để tránh xung đột giữa JQuery và Prototype

Tôi tự hỏi nếu có bất kỳ tùy chọn nào cho Prototype để giải quyết xung đột này. Có cách nào để sử dụng cả hai thư viện mà không ảnh hưởng đến lợi ích hoặc từ khóa ngắn của họ?

Theo như tôi biết, bạn không nên sử dụng nhiều thư viện JS cho cùng một trang; nhưng đôi khi có thể hữu ích.

+0

chắc chắn rằng bạn tải jQuery trước khi nguyên mẫu –

+0

Tôi nghĩ rằng điều này đã là một trong những câu hỏi jQuery hỏi nhất :) –

Trả lời

34

Sử dụng phương thức noConflict cho jQuery và gán cho biến mới (ngắn). Sử dụng biến mới bất cứ nơi nào bạn đã sử dụng $ cho jQuery.

var $j = jQuery.noConflict(); 

$j(function() { 
    $j('#selector').each(....); 
}); 

hoặc, nếu bạn không cần trộn Prototype/jQuery, bạn có thể bọc tất cả mã jQuery của mình bằng chức năng ẩn danh.

(function($) { 
    // $ sign here is a parameter, which is set to jQuery 

    $(function() { 
     $('#selector').each(....); 
    }); 
})(jQuery); 
+0

Có bất kỳ thứ tự cụ thể mà jQuery đã được bao gồm (đầu tiên, cuối cùng, vv) cho một trong hai ví dụ mã của bạn? –

+0

Nếu bạn sử dụng noConflict, jQuery phải được bao gồm trước khi bạn gọi nó (rõ ràng) cũng như thư viện khác định nghĩa $. Xem trang này để biết thêm thông tin: http://docs.jquery.com/Using_jQuery_with_Other_Libraries – tvanfosson

+0

@tvanfosson Tôi không biết rằng một biến có thể được chỉ định, lừa đẹp :) Uhh ... Tôi biết về kỹ thuật thứ hai, nhưng không thích nó: (nó làm cho tôi nhầm lẫn một cách dễ dàng. Cảm ơn bạn đã dành thời gian :) – Sadi

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