ฉันจะตรวจสอบเวอร์ชันของ jQuery ที่โหลดบนเครื่องไคลเอ็นต์ได้อย่างไร ลูกค้าอาจโหลด jQuery แล้วแต่ไม่ทราบวิธีตรวจสอบ หากพวกเขามีมันโหลดฉันจะตรวจสอบรุ่นและคำนำหน้าเช่น:
$('.class')
JQuery('.class')
ฉันจะตรวจสอบเวอร์ชันของ jQuery ที่โหลดบนเครื่องไคลเอ็นต์ได้อย่างไร ลูกค้าอาจโหลด jQuery แล้วแต่ไม่ทราบวิธีตรวจสอบ หากพวกเขามีมันโหลดฉันจะตรวจสอบรุ่นและคำนำหน้าเช่น:
$('.class')
JQuery('.class')
คำตอบ:
if (typeof jQuery != 'undefined') {
// jQuery is loaded => print the version
alert(jQuery.fn.jquery);
}
jQuery.fn.jquery
และjQuery().jquery
(shorthands: $.fn.jquery
$().jquery
) ฉันเขียนเกี่ยวกับรายละเอียดพร้อมลิงก์ไปยังซอร์สโค้ด jquery หากคุณต้องการเจาะลึกยิ่งขึ้น
if (window.jQuery) { // jQuery is loaded => print the version alert(jQuery.fn.jquery); }
!==
คุณสามารถตรวจสอบว่ามีjQuery
วัตถุอยู่หรือไม่:
if( typeof jQuery !== 'undefined' ) ... // jQuery loaded
jQuery().jquery
มีหมายเลขเวอร์ชัน
สำหรับคำนำหน้าjQuery
ควรทำงานเสมอ หากคุณต้องการใช้$
คุณสามารถตัดโค้ดของคุณไปยังฟังก์ชั่นและส่งผ่านjQuery
ไปเป็นพารามิเตอร์:
(function( $ ) {
$( '.class' ).doSomething(); // works always
})( jQuery )
if( jQuery )
จะโยนยกเว้นถ้าjQuery
ไม่เป็นที่รู้จักและมันจะไม่ทำงาน
try {...}catch(e){...}
?
jQuery().jquery
อย่าใช้ มันสร้างวัตถุ jQuery เพื่ออะไร (คัดลอกความคิดเห็นจากคำตอบอื่น)
$.fn.jquery
// If there is concern that there may be multiple implementations of `$` then:
jQuery.fn.jquery
หากคุณได้รับหมายเลขเวอร์ชันกลับคืน - โดยปกติจะเป็นสตริง - ดังนั้นจึงโหลด jQuery และเป็นรุ่นที่คุณใช้งานอยู่ หากไม่ได้โหลดคุณควรกลับไป
undefined
หรืออาจเกิดข้อผิดพลาด
คำถามเก่าสวยและฉันเห็นบางคนที่ได้กล่าวถึงคำตอบของฉันในความคิดเห็นแล้ว อย่างไรก็ตามฉันพบว่าบางครั้งคำตอบที่ยอดเยี่ยมที่ถูกทิ้งไว้เป็นความคิดเห็นอาจไม่มีใครสังเกตเห็น โดยเฉพาะอย่างยิ่งเมื่อมีความคิดเห็นมากมายต่อคำตอบคุณอาจพบว่าตัวเองกำลังขุดหากองของพวกเขาเพื่อค้นหาอัญมณี หวังว่านี่จะช่วยให้ใครบางคนออกไป!
…เพียงเพราะวิธีนี้ยังไม่ได้กล่าวถึง - เปิดคอนโซลและประเภท:
$ === jQuery
ตามที่ @Juhana ดังกล่าวข้างต้น$().jquery
จะส่งคืนหมายเลขเวอร์ชัน
($ === jQuery)?$().jquery:'no jquery';
ฉันพบว่านี่เป็นวิธีที่สั้นและง่ายที่สุดในการตรวจสอบว่ามีการโหลด 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และอื่น ๆ
ความชอบของฉันคือ:
console.debug("jQuery "+ (jQuery ? $().jquery : "NOT") +" loaded")
ผลลัพธ์:
โหลด jQuery 1.8.0 แล้ว
คุณควรสรุปสิ่งนี้ใน 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
}
typeof jQuery != 'undefined'
? สิ่งนี้เป็นจริงสำหรับ IE ทุกอันหรืออันที่เก่ากว่า?
ในหนึ่งบรรทัดและขั้นต่ำของการกดแป้น (oops!):
alert($().jquery);
ไปที่เครื่องมือของนักพัฒนา> คอนโซลและเขียนหนึ่งในคำสั่งต่อไปนี้
jQuery.fn.jquery
console.log(jQuery().jquery);
ตามบล็อกของสัตว์ประหลาดแม่แบบการพิมพ์สคริปต์ด้านล่างเหล่านี้จะให้รุ่น jquery ในไซต์ที่คุณกำลังสำรวจ
1. console.log(jQuery.fn.jquery);
2. console.log(jQuery().jquery);
if (jQuery){
//jquery loaded
}
.....
$
บางคนใช้ห้องสมุดอื่น ๆ
$
? ไม่ใช่เฉพาะ jQuery