จะตรวจสอบรุ่นของ jQuery ที่โหลดได้อย่างไร?


466

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

$('.class')
JQuery('.class')

2
ไคลเอ็นต์อาจโหลด jQuery หากคุณรวมไว้เป็นไฟล์ที่จะดาวน์โหลด ปัญหาคืออะไรกันแน่?
Jared Farrish

1
Dunno เกี่ยวกับสิ่งที่ OP ต้องการ แต่ถ้าคุณกำลังสร้างสคริปต์หรือปลั๊กอินที่ต้องการ jQuery คุณสามารถตรวจสอบและโยนข้อผิดพลาดได้หากไม่มีอยู่หรือรุ่นเก่าเกินไป
JJJ

1
เป็นไปได้ที่ซ้ำกันของรุ่น Get jQuery จากการตรวจสอบวัตถุ jQuery
Mołot

คำตอบ:


900
if (typeof jQuery != 'undefined') {  
    // jQuery is loaded => print the version
    alert(jQuery.fn.jquery);
}

29
: มี 2 วิธีการตรวจสอบรุ่น jQuery โหลดขณะนี้jQuery.fn.jqueryและjQuery().jquery(shorthands: $.fn.jquery $().jquery) ฉันเขียนเกี่ยวกับรายละเอียดพร้อมลิงก์ไปยังซอร์สโค้ด jquery หากคุณต้องการเจาะลึกยิ่งขึ้น
อุซเบกิสถานที่

3
เวอร์ชันที่เรียบง่ายยิ่งขึ้น if (window.jQuery) { // jQuery is loaded => print the version alert(jQuery.fn.jquery); }
asherrard

6
เช็คที่ไม่ได้กำหนดควรเป็น!==
plankguy

1
หมายเหตุตัวพิมพ์เล็ก :)
ถั่วแดง

2
jQuery().jqueryอย่าใช้ มันสร้างวัตถุ jQuery โดยไม่ใช้อะไรเลยเพียงแค่ใช้สิ่งที่คำตอบบอกไว้

30

คุณสามารถตรวจสอบว่ามีjQueryวัตถุอยู่หรือไม่:

if( typeof jQuery !== 'undefined' ) ... // jQuery loaded

jQuery().jquery มีหมายเลขเวอร์ชัน

สำหรับคำนำหน้าjQueryควรทำงานเสมอ หากคุณต้องการใช้$คุณสามารถตัดโค้ดของคุณไปยังฟังก์ชั่นและส่งผ่านjQueryไปเป็นพารามิเตอร์:

(function( $ ) {
    $( '.class' ).doSomething();  // works always
})( jQuery )

3
if( jQuery )จะโยนยกเว้นถ้าjQueryไม่เป็นที่รู้จักและมันจะไม่ทำงาน
ดารินทร์ดิมิทรอฟ

อาจจะห่อในtry {...}catch(e){...}?
Akash

2
jQuery().jqueryอย่าใช้ มันสร้างวัตถุ jQuery เพื่ออะไร (คัดลอกความคิดเห็นจากคำตอบอื่น)
törzsmókus

19
$.fn.jquery
// If there is concern that there may be multiple implementations of `$` then:
jQuery.fn.jquery

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

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


1
@ Janar ไม่มันไม่เหมือนกันทุกประการ ในทางตรงกันข้ามซับซ้อนเกินไป IMO
Rockin4Life33

18

…เพียงเพราะวิธีนี้ยังไม่ได้กล่าวถึง - เปิดคอนโซลและประเภท:

$ === jQuery

ตามที่ @Juhana ดังกล่าวข้างต้น$().jqueryจะส่งคืนหมายเลขเวอร์ชัน


สิ่งที่ต้องการ($ === jQuery)?$().jquery:'no jquery';
UselesssCat

1
OP ขอให้ตรวจสอบรุ่นที่โหลด สิ่งนี้ไม่ตอบคำถาม
Akira Yamamoto

16

ฉันพบว่านี่เป็นวิธีที่สั้นและง่ายที่สุดในการตรวจสอบว่ามีการโหลด jQuery หรือไม่:

if (window.jQuery) {
    // jQuery is available.

    // Print the jQuery version, e.g. "1.0.0":
    console.log(window.jQuery.fn.jquery);
}

วิธีนี้ใช้โดยhttp://html5boilerplate.comและอื่น ๆ


@AndreFigueiredo ฉันได้แก้ไขคำตอบเพื่อรวมถึงวิธีรับหมายเลขรุ่นหลังจากตรวจสอบให้แน่ใจว่าโหลด jQuery แล้ว
Markus Amalthea Magnuson

5

ความชอบของฉันคือ:

console.debug("jQuery "+ (jQuery ? $().jquery : "NOT") +" loaded")

ผลลัพธ์:

โหลด jQuery 1.8.0 แล้ว


ฉันได้รับ: ไม่ได้กำหนด
Joe L.

นี่เป็นการดีกว่าเล็กน้อย แต่การบันทึกไม่มีประโยชน์เมื่อทำงานกับแอป คุณดีกว่าการบันทึกตัวแปรก่อน let has$ = typeof jQuery === 'function'; console.log('jQuery' + (has$ ? ` version ${jQuery.fn.jquery} loaded.` : ' is not loaded.'));

3

คุณควรสรุปสิ่งนี้ใน try / catch block สำหรับ IE:

// Ensure jquery is loaded -- syntaxed for IE compatibility
try
{
    var jqueryIsLoaded=jQuery;
    jQueryIsLoaded=true;
}
catch(err)
{
    var jQueryIsLoaded=false;
}
if(jQueryIsLoaded)
{
    $(function(){
        /** site level jquery code here **/
    });
}
else
{
    // Jquery not loaded
}

IE ไม่ได้จัดการtypeof jQuery != 'undefined'? สิ่งนี้เป็นจริงสำหรับ IE ทุกอันหรืออันที่เก่ากว่า?
JJJ

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

สิ่งนี้ช่วยฉันได้มากจริงๆ ฉันพยายามดิ้นรนเพื่อให้ได้พฤติกรรมที่แน่นอนใน Firefox และ IE เพื่อตรวจสอบว่ามีการโหลด jQuery หรือไม่โดยใช้ WatiN ขณะนี้มีวิธีแก้ปัญหานี้ฉันมีความสุขมาก ต้องขอบคุณคุณ!
rahoolm


1

ไปที่เครื่องมือของนักพัฒนา> คอนโซลและเขียนหนึ่งในคำสั่งต่อไปนี้ jQuery.fn.jquery console.log(jQuery().jquery);



-2
if (jQuery){
   //jquery loaded
}

.....


1
$บางคนใช้ห้องสมุดอื่น ๆ
Jared Farrish

2
เกิดอะไรขึ้นถ้าพวกเขากำลังใช้ต้นแบบ? หรือสิ่งอื่นใดที่ใช้$? ไม่ใช่เฉพาะ jQuery
JJJ

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