ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingจะใช้ plugin jQuery ยังไงที่ไม่ให้ขัดกันกับ Library อื่นครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: จะใช้ plugin jQuery ยังไงที่ไม่ให้ขัดกันกับ Library อื่นครับ  (อ่าน 871 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
konggang
Newbie
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 84



ดูรายละเอียด เว็บไซต์
« เมื่อ: 11 เมษายน 2011, 17:27:56 »

จากที่ผมหาข้อมูลมาแล้ว คือ jquery มีตัวแปรเหมือนกับ Library อื่นๆ คือ $ ดังนั้นให้ทำการเปลี่ยนชื่อตัวแปร jquery  ซะ โดยเรียก jQuery.noConflict() ดังโค้ดด้านล่าง
โค๊ด:
<html>
<head>
<script src="jquery.js"></script>
<script src="prototype.js"></script>
<script type="text/javascript">
     jQuery.noConflict();

     // Use jQuery via jQuery(...)
     jQuery(document).ready(function(){
       jQuery("div").hide();
     });

     // Use Prototype with $(...), etc.
     $('someid').hide();
</script>
</head>
<body></body>
</html>


แต่ผมก็ไม่เข้าใจอยู่ดีคือ
ยกตัวอย่าง ถ้าหากเราใช้ tooltip plugin ของ jquery เราต้องเปลี่ยนตัวแปรใน tooltip ด้วยไหมครับหรือยังไงที่ทำให้มันสามารถใช้ได้  Lips Sealed

ช่วยทีเถอะนะครับ จนปัญญา
บันทึกการเข้า
gigkokman
ก๊วนเสียว
*

พลังน้ำใจ: 19
ออฟไลน์ ออฟไลน์

กระทู้: 435



ดูรายละเอียด
« ตอบ #1 เมื่อ: 11 เมษายน 2011, 18:42:47 »

ที่ผมเข้าใจไม่จำเป็นต้องตามเข้าไปแก้นะครับ

เพราะ plugin ของ jQuery จะเป็น self excuting ที่ส่งออฟเจ็ค jQuery เป็น argument เข้าไปในฟังก์ชันอีกทีนึงครับ

โค๊ด:
(function($){
...
})(jQuery)

ถ้าเรามี jQuery.noConflict(); ก็สามารถใช้ plugin ได้ปกติครับ
บันทึกการเข้า

ลิขิตฟ้าหรือจะสู้มานะคน
bonshington
ก๊วนเสียว
*

พลังน้ำใจ: 47
ออฟไลน์ ออฟไลน์

กระทู้: 376



ดูรายละเอียด
« ตอบ #2 เมื่อ: 11 เมษายน 2011, 21:23:49 »

(function($){...})(jQuery); ไม่ช่วยนะ เพราะสุดท้ายแล้ว มันก็คือการใช้ $ ตามปกติ
ถ้า lib ซ้ำกัน วิธีที่ง่ายที่สุด คือการไปเปิดหา source code (เพราะมันเป็น open source) แล้วก็ ก๊อปมาแก้ชื่อซะก็จบ ทั้งนี้ทั้งนั้น ต้องดูว่า jquery เป็นประเภทไหนด้วย
เช่น

ถ้าเป็น widget ก็ใส่ _ ตรงกลางชื่อ (อย่าใส่ข้างหน้า)
โค๊ด:
(function($){
  $.widget("tool_tip", { // หรือจะเป็น jquery.tooltip ก็ได้ แต่เวลาเรียก ต้องเรียกอีกแบบ
  }
)})(jQuery);

ถ้าเป็น extension ก็เปลี่ยนชื่อซะ โดยใส่ _ ตรงกลาง ก็จบ
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์