ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: konggang ที่ 11 เมษายน 2011, 17:27:56



หัวข้อ: จะใช้ plugin jQuery ยังไงที่ไม่ให้ขัดกันกับ Library อื่นครับ
เริ่มหัวข้อโดย: konggang ที่ 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 ด้วยไหมครับหรือยังไงที่ทำให้มันสามารถใช้ได้  :-X

ช่วยทีเถอะนะครับ จนปัญญา


หัวข้อ: Re: จะใช้ plugin jQuery ยังไงที่ไม่ให้ขัดกันกับ Library อื่นครับ
เริ่มหัวข้อโดย: gigkokman ที่ 11 เมษายน 2011, 18:42:47
ที่ผมเข้าใจไม่จำเป็นต้องตามเข้าไปแก้นะครับ

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

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

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


หัวข้อ: Re: จะใช้ plugin jQuery ยังไงที่ไม่ให้ขัดกันกับ Library อื่นครับ
เริ่มหัวข้อโดย: bonshington ที่ 11 เมษายน 2011, 21:23:49
(function($){...})(jQuery); ไม่ช่วยนะ เพราะสุดท้ายแล้ว มันก็คือการใช้ $ ตามปกติ
ถ้า lib ซ้ำกัน วิธีที่ง่ายที่สุด คือการไปเปิดหา source code (เพราะมันเป็น open source) แล้วก็ ก๊อปมาแก้ชื่อซะก็จบ ทั้งนี้ทั้งนั้น ต้องดูว่า jquery เป็นประเภทไหนด้วย
เช่น

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

ถ้าเป็น extension ก็เปลี่ยนชื่อซะ โดยใส่ _ ตรงกลาง ก็จบ