ฉันจะอัพเดต jQuery เป็นเวอร์ชันล่าสุดที่ฉันสามารถดาวน์โหลดได้อย่างไร


33

ฉันใช้ Drupal 7 ซึ่งใช้ jQuery 1.4 เป็นค่าเริ่มต้น ฉันจะอัปเดตเป็นเวอร์ชั่นล่าสุด (ปัจจุบันคือ 1.7) ได้อย่างไร


1
ฉันไม่ต้องการใช้โมดูลต้องการมานูเอล
Karmacoma

การอัปเกรด jQuery ใน Drupal ด้วยตนเองจะมีความซับซ้อนและมีความเสี่ยงแม้กระทั่งสำหรับนักพัฒนา Drupal ที่มีประสบการณ์มากที่สุด คุณควรรับคำแนะนำของ Clive และใช้ jQuery Update
sheena_d

ฉันไปที่ไฟล์ misc-jquery.js ผ่าน ftp และแทนที่รหัส jquery ใหม่ ขวา?
Karmacoma

misc-jquery.js ไม่เหมือนกันกับรุ่น jquery เท่าที่ฉันรู้ อย่างไรก็ตามตาม git drupalcode.org/project/jquery_update.git/tree/refs/heads/…ก็ควรมี 1.7 การสนับสนุนด้วย
AyeshK

@ แพทริกเคนนี่ฉันไม่คิดว่าถูกต้อง - ฉันสามารถเลือก jquery 1.8 โดยใช้ jquery_update ณ วันนี้
doub1ejack

คำตอบ:


44

วิธีหนึ่งคือการติดตั้งรุ่น devของjQuery ปรับปรุงซึ่งจะช่วยให้คุณเลือกที่จะใช้ jQuery 1.7 (โดยไปที่หน้าการตั้งค่าที่http://mysite.com/admin/config/development/jquery_update )

แต่ระวังในปัจจุบันเป็นที่ทราบกันดีว่าการทำลาย JavaScript ที่อื่นในไซต์ (ตัวอย่างเช่นการดร็อปดาวน์วิดเจ็ตบนหน้า Manage Fields จะไม่ทำงานอีกต่อไป) หากคุณพร้อมที่จะแก้ไขปัญหานั้นและสิ่งรบกวนเล็กน้อยอื่น ๆ นี่อาจเป็นทางออกที่ดีที่สุดของคุณ คุณควรทราบด้วยว่าการใช้โมดูลรุ่น dev นั้นไม่มีความเสี่ยงเพราะโอกาสในการมีข้อบกพร่องนั้นสูงกว่าการใช้รุ่นที่เฉพาะเจาะจง

หากคุณต้องการทำด้วยตนเองคุณจะมีโค้ดจาวาสคริปต์หลักจำนวนมากเพื่อเขียนใหม่เพื่อให้ไซต์ของคุณทำงานตามที่คาดไว้ jQuery เปลี่ยนล็อตที่น่ากลัวระหว่างเวอร์ชัน 1.4 / 1.5 และ 1.7 ดังนั้นโค้ดจาวาสคริปต์หลักของ Drupal ก็ไม่สามารถใช้งานได้

หากคุณต้องการเพียงแค่ปล่อย jQuery 1.7 ในเวอร์ชันแล้วคุณอาจจะสามารถใช้งานได้hook_js_alter()ให้ยกเลิกการตั้งค่าไฟล์ core jQuery และเพิ่มของคุณเองในที่นี้:

function MYMODULE_js_alter(&$js) {
  $path = drupal_get_path('module', 'MYMODULE') . '/path/to/jquery.1.7.js';

  // Copy the current jQuery file settings and change
  $js[$path] = $js['misc/jquery.js'];

  // Update necessary settings
  $js[$path]['version'] = 1.7;
  $js[$path]['data'] = $path;

  // Finally remove the original jQuery
  unset($js['misc/jquery.js']);
}

เมื่อคุณทำเสร็จแล้วให้เปิดเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ / Firebug แล้วคุณจะเห็นการเปลี่ยนแปลงทั้งหมดที่คุณต้องทำเพื่อให้ส่วนที่เหลือของไซต์ JS ทำงานได้ :)

UPDATE

เวอร์ชั่นล่าสุดของการอัปเดต jQuery ( 7.x-2.3ณ เวลาที่เขียน) จะอนุญาตให้คุณอัปเดต jQuery เป็น v1.8 เด็ดมาก

jQuery หลายโมดูลเป็นตัวเลือกอื่นขอบคุณ Goron สำหรับการชี้ให้เห็นว่าในการแสดงความคิดเห็น ในขณะที่เขายังตั้งข้อสังเกตโมดูลนี้มีการเปิดตัวที่มั่นคงและจะไม่ทำลายจาวาสคริปต์ที่มีอยู่


คุณทักษิณ !!! ฉันหามาได้ซักพักแล้ว! ในกรณีของฉันฉันแค่อยากจะโหลดรุ่นที่แตกต่างกันของ jQuery ต่อธีมดังนั้นฉันเพิ่งแทนที่ MYMODULE_js_alter สำหรับ MYTHEME_js_alter และ drupal_get_path ( 'ธีม', 'MYTHEME') สำหรับ drupal_get_path ( 'โมดูล', 'MyModule')
victmo

1
ระวัง Drupal มาพร้อมกับชุดของไฟล์ JavaScript ที่เขียนขึ้นเพื่อใช้งานกับ jQuery แบบเก่าและไม่สามารถทำงานร่วมกับ jQuery 1.7 หรือ 1.8 jQuery Update ล่าสุดให้ไฟล์ทดแทนสำหรับสิ่งเหล่านี้
Pierre Buyle

1
คุณต้องการรุ่น dev ของโมดูลรุ่นเสถียรไม่มีตัวเลือกสำหรับ 1.7
Clive

2
jQuery Multi เป็นอีกตัวเลือกหนึ่งซึ่งไม่ต้องการรุ่น dev และจะไม่ทำลาย JS ใด ๆ อาจเพิ่มเป็นตัวเลือกหรือลบ "วิธีเดียว" หรือไม่
goron

1
@goron จุดดีขอบคุณ คำตอบบางส่วนอาจล้าสมัยแล้วตอนนี้ฉันจะพยายามอัปเดตในไม่ช้า
ไคลฟ์

4

คุณควรพิจารณาใช้ jquery multi module ซึ่งอนุญาตให้คุณใช้ jquery มากกว่าหนึ่งรุ่น สุดยอดโมดูลฉันใช้มันเพื่อ Druapl 7 และ 6 ในทุกโครงการของฉัน


2

แรงบันดาลใจจากเอกสารประกอบhook_js_alterงานต่อไปนี้ คุณสามารถวางไว้ในแม่แบบของชุดรูปแบบของคุณ สิ่งนี้ต้องการให้คุณใช้ธีมผู้ดูแลระบบที่แตกต่างกันเพื่อหลีกเลี่ยงความขัดแย้งกับแกน Drupal และถือว่า jquery-1.8.3.min.js อยู่ในโฟลเดอร์ที่เรียกว่า 'js' ภายในชุดรูปแบบ (ปรับให้เหมาะสม)

function [theme_machine_name]_js_alter(&$javascript) {

  $javascript['misc/jquery.js']['data'] = drupal_get_path('theme', '[theme_machine_name]') .
    '/js/jquery-1.8.3.min.js';

  $javascript['misc/jquery.js']['version'] = '1.8.3';

}


การกำหนดธีมของผู้ดูแลระบบที่แตกต่างไม่ใช่วิธีแก้ปัญหาจริงๆเว้นแต่คุณจะสามารถให้รายการของชุดรูปแบบที่จะทำงานกับวิธีนี้ ฉันเดาว่ามันจะน้อยมาก บวกกับชุดรูปแบบเหล่านั้นมีแนวโน้มที่จะใช้ jQuery ด้วยซึ่งจะนำไปสู่ปัญหาที่แน่นอนว่าโมดูลการอัพเดต jQuery ได้รับการออกแบบมาเพื่อแก้ไขโดยเฉพาะ
Clive

0

ผมไม่แน่ใจว่าสิ่งที่วัตถุประสงค์ของคุณอยู่ที่นี่ แต่เมื่อผมจำเป็นต้องมีรุ่นที่เฉพาะเจาะจงสำหรับการพัฒนาโมดูลที่กำหนดเองที่ฉันได้รับสามารถที่จะทำได้โดยใช้jQuery.noConflict

มันเป็นงานพิเศษเมื่อเทียบกับโมดูล jquery_update (ซึ่ง OP ดูเหมือนจะไม่สนใจ) แต่ก็หมายความว่าคุณไม่ต้องกังวลว่าคุณจะติดตั้ง drupal ทั้งหมดหรือไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.