jQuery 3.3

Types




jquery

تعرض هذه الصفحة أنواع البيانات التي تظهر في توقيعات وظيفة jQuery ، سواء تم تعريفها بواسطة JavaScript نفسها أو مقيدة بشكل أكبر بواسطة jQuery. ما لم يتم النص على خلاف ذلك صراحةً ، تتطلب دالات jQuery قيمًا بدائية عند الاقتضاء ، ولا تقبل النماذج التي تحتوي على الكائنات. إذا كنت ترغب في دراسة هذه المفاهيم بعمق ، MDN نظرة على MDN .

من المفترض أن تتمكن من تجربة معظم الأمثلة أدناه بنسخها فقط إلى وحدة تحكم جافا سكريبت في متصفحك.

عندما يشير أحد الأمثلة إلى أن النوع افتراضية إلى قيمة منطقية ، فإن النتيجة تكون جيدة عند استخدام هذا النوع في سياق منطقي:

var x = "";
if ( x ) {
  console.log( "x defaulted to true" );
} else {
  console.log( "x defaulted to false" );
}

في هذه الحالة ، تتم طباعة "x defaulted to false" .

للحفاظ على اختصار الأمثلة ، يتم استخدام العامل المقابل ("لا") ونفي مزدوج لإظهار سياق منطقي:

var x = "";
!x // true
!!x // false (Double negation: Since "not (empty string)" is true, negating that makes it false)

على الأنواع الفعلية.

محتويات

  1. Anything
  2. String
  3. htmlString
  4. Number
  5. Boolean
  6. Object
  7. Array
  8. كائن يشبه المصفوفة
  9. PlainObject
  10. Date
  11. Function
  12. Error
  13. Selector
  14. Event
  15. Element
  16. Text
  17. jQuery
  18. XMLHttpRequest
  19. jqXHR
  20. Thenable
  21. كائن مؤجل
  22. وعد كائن
  23. Callbacks الكائن
  24. وثيقة XML
  25. كائن تأكيد Qunit

اى شى

يتم استخدام نوع أي شيء ظاهري في وثائق jQuery للإشارة إلى أنه يمكن استخدام أو تحديد أي نوع.

خيط

السلسلة في JavaScript هي قيمة بدائية ثابتة لا تحتوي على أي حرف واحد أو أكثر.

"I'm a String in JavaScript!"
'So am I!'

نوع السلسلة "سلسلة".

typeof "some string"; // "string"

نقلا عن

يمكن تعريف السلسلة باستخدام علامات اقتباس مفردة أو مزدوجة. يمكنك تضمين علامات الاقتباس الفردية داخل علامات اقتباس مزدوجة ، والعكس. لخلط علامات الاقتباس المزدوجة مع علامات الاقتباس المزدوجة (أو مفردة مع مفردة) ، يجب إفساد تلك المتداخلة مع خط مائل عكسي.

"You make 'me' sad."
'That\'s "cranking" good fun!'
"<a href=\"home\">Home</a>"

أساليب مدمجة

تحتوي السلسلة في JavaScript على بعض الطرق المضمنة لمعالجة السلسلة ، على الرغم من أن النتيجة هي دائمًا سلسلة جديدة - أو أي شيء آخر ، على سبيل المثال. الانقسام يعيد array .

"hello".charAt( 0 ) // "h"
"hello".toUpperCase() // "HELLO"
"Hello".toLowerCase() // "hello"
"hello".replace( /e|o/g, "x" ) // "hxllx"
"1,2,3".split( "," ) // [ "1", "2", "3" ]

طول الممتلكات

كل السلاسل لها خاصية طولية.

"Hello".length // 5
"".length // 0

منطقية الافتراضي

سلسلة افتراضية افتراضية إلى false:

!"" // true
!!"" // false
!"hello" // false
!"true" // false
!new Boolean( false ) // false

htmlString

يتم تعيين سلسلة htmlString في وثائق jQuery عند استخدامها لتمثيل عنصر DOM أو أكثر ، وعادة ما يتم إنشاؤه وإدراجه في المستند. عند تمريرها كوسيطة للدالة jQuery() ، يتم تعريف السلسلة على أنها HTML إذا كانت تبدأ بـ <tag ... > ) ويتم تحليلها على هذا النحو حتى الحرف الأخير. قبل jQuery 1.9 ، اعتبرت السلسلة أنها HTML إذا كانت تحتوي على <tag ... > أي مكان داخل السلسلة .

عندما يتم تمرير سلسلة كوسيطة إلى طريقة معالجة مثل .append() ، فإنها تعتبر دائمًا HTML لأن التفسير الشائع الآخر لـ jQuery لسلسلة (محددات CSS) لا ينطبق في هذه السياقات.

لإجراء تحليل واضح لسلسلة إلى HTML ، $.parseHTML() طريقة $.parseHTML() بدءًا من jQuery 1.8.

// Appends <b>hello</b>:
$( "<b>hello</b>" ).appendTo( "body" );
 
// Appends <b>hello</b>:
$( "<b>hello</b>bye" ).appendTo( "body" );
 
// Syntax error, unrecognized expression: bye<b>hello</b>
$( "bye<b>hello</b>" ).appendTo( "body" );
 
// Appends bye<b>hello</b>:
$( $.parseHTML( "bye<b>hello</b>" ) ).appendTo( "body" );
 
// Appends <b>hello</b>wait<b>bye</b>:
$( "<b>hello</b>wait<b>bye</b>" ).appendTo( "body" );

رقم

الأرقام في جافا سكريبت هي دقة مزدوجة 64 بت من IEEE 754. إنها قيم بدائية غير قابلة للتغيير ، تمامًا مثل String . تتوفر جميع عوامل التشغيل الشائعة في اللغات التي تعتمد على c للعمل بالأرقام (+ ، - ، * ، / ،٪ ، = ، + = ، - = ، * = ، / = ، ++ ، -).

12
3.543

نوع الرقم هو "رقم".

typeof 12 // "number"
typeof 3.543 // "number"

منطقية الافتراضي

إذا كان الرقم صفرًا ، فسيتم افتراضه كاذبًا:

!0 // true
!!0 // false
!1 // false
!-1 // false

نظرًا لتطبيق الأرقام على أنها قيم الدقة المزدوجة ، فإن النتيجة التالية ليست خطأ:

0.1 + 0.2 // 0.30000000000000004


الرياضيات

تقدم JavaScript الأدوات المساعدة للعمل مع الأرقام الموجودة في كائن Math:

Math.PI // 3.141592653589793
Math.cos( Math.PI ) // -1

تحليل الارقام

تساعد parseInt و parseFloat في تحليل السلاسل إلى أرقام. كلاهما يقوم ببعض التحويل الضمني إذا لم يتم تحديد القاعدة:

parseInt( "123" ) = 123 // (implicit decimal)
parseInt( "010" ) = 8 // (implicit octal)
parseInt( "0xCAFE" ) = 51966 // (implicit hexadecimal)
parseInt( "010", 10 ) = 10 // (explicit decimal)
parseInt( "11", 2 ) = 3 // (explicit binary)
parseFloat( "10.10" ) = 10.1

الأرقام على السلاسل

عند إلحاق الأرقام بالسلسلة ، تكون النتيجة دائمًا سلسلة. المشغل هو نفسه ، لذا كن حذرًا: إذا كنت تريد إضافة أرقام ثم إلحاقها بسلسلة ، ضع الأقواس حول الأرقام:

"" + 1 + 2; // "12"
"" + ( 1 + 2 ); // "3"
"" + 0.0000001; // "1e-7"
parseInt( 0.0000001 ); // 1 (!)

أو يمكنك استخدام الفئة String المتوفرة بواسطة javascript ، والتي تحاول تحليل قيمة كسلسلة:

String( 1 ) + String( 2 ); // "12"
String( 1 + 2 ); // "3"

NaN و Infinity

تحليل شيء لا ينتج عنه رقم NaN. يساعد isNaN على اكتشاف تلك الحالات:

parseInt( "hello", 10 ) // NaN
isNaN( parseInt("hello", 10) ) // true

ينتج القسمة صفر في اللانهاية:

1 / 0 // Infinity

كل من NaN و Infinity من النوع "number":

typeof NaN // "number"
typeof Infinity // "number"

لاحظ أن NaN يقارن بطريقة غريبة:

NaN === NaN // false (!)

لكن:

Infinity === Infinity // true

عدد صحيح

العدد الصحيح هو نوع رقم عادي ، ولكن كلما تم ذكره بوضوح ، يشير إلى أنه من المتوقع وجود رقم غير عائم.

تطفو

تعويم هو نوع رقم عادي ، مثل عدد صحيح ، ولكن كلما ذكر بشكل صريح ، يشير إلى أنه من المتوقع وجود رقم فاصلة عائمة.


منطقية

يمكن أن يكون المنطقي في JavaScript إما صحيحًا أو كاذبًا:

if ( true ) console.log( "always!" );
if ( false ) console.log( "never!" );

موضوع

كل شيء في JavaScript هو كائن ، على الرغم من أن بعضها أكثر موضوعية (haha). إن أسهل طريقة لإنشاء كائن هي الكائن الحرفي:

var x = {};
var y = {
  name: "Pete",
  age: 15
};

نوع الكائن هو "كائن":

typeof {} // "object"

Dot Notation

يمكنك كتابة وقراءة خصائص كائن باستخدام التدوين النقطي:

y.name // "Pete"
y.age // 15
x.name = y.name + " Pan" // "Pete Pan"
x.age = y.age + 1 // 16

مفكرة المصفوفة

أو يمكنك كتابة وقراءة الخصائص باستخدام ترميز الصفيف ، والذي يسمح لك باختيار الخاصية بشكل ديناميكي:

var operations = {
  increase: "++",
  decrease: "--"
};
var operation = "increase";
operations[ operation ] // "++"
operations[ "multiply" ] = "*"; // "*"

تكرار

يعد التبديل فوق العناصر أمرًا سهلاً باستخدام حلقة التكرار:

var obj = {
  name: "Pete",
  age: 15
};
for( key in obj ) {
  alert( "key is " + [ key ] + ", value is " + obj[ key ] );
}

لاحظ أنه يمكن إفساد for-in-loop عن طريق توسيع Object.prototype (راجع Object.prototype هو verboten ) لذا يجب توخي الحذر عند استخدام مكتبات أخرى.

يوفر jQuery عامًا لكل وظيفة للتكرار على خصائص الكائنات ، بالإضافة إلى عناصر المصفوفات:

jQuery.each( obj, function( key, value ) {
  console.log( "key", key, "value", value );
});

العائق هو أن يتم استدعاء رد الاتصال في سياق كل قيمة وبالتالي تفقد سياق الكائن الخاص بك إذا كان ذلك ممكناً. أكثر على هذا أدناه في وظائف.

الافتراضي منطقي

كائن ، بغض النظر عما إذا كان يحتوي على خصائص أم لا ، لا يتم افتراضه بشكل خاطئ:

!{} // false
!!{} // true

النموذج المبدئي

جميع الكائنات لها خاصية النموذج الأولي. عندما يبحث المترجم عن خاصية ، فإنه يتحقق أيضًا من النموذج الأولي للكائن إذا لم يتم العثور على الخاصية على الكائن نفسه. يستخدم jQuery النموذج الأولي على نطاق واسع لإضافة أساليب إلى حالات jQuery. داخليًا ، يجعل jQuery jQuery.fn اسمًا مستعارًا من jQuery.prototype بحيث يمكنك استخدام أحدهما (على الرغم من أن مطوري البرامج jQuery.prototype على fn ).

var form = $("#myform");
console.log( form.clearForm ); // undefined
 
// jQuery.fn === jQuery.prototype
jQuery.fn.clearForm = function() {
  return this.find( ":input" ).each(function() {
    this.value = "";
  }).end();
};
 
// works for all instances of jQuery objects, because
// the new method was added to the prototype
console.log( form.clearForm ); // function
form.clearForm();

مجموعة مصفوفة

المصفوفة في JavaScript هي قوائم قابلة للتغيير مع بعض الأساليب المضمنة. يمكنك تحديد المصفوفات باستخدام الصفيف الحرفي:

var x = [];
var y = [ 1, 2, 3 ];

نوع الصفيف هو "object":

typeof []; // "object"
typeof [ 1, 2, 3 ]; // "object"

تستخدم عناصر القراءة والكتابة إلى مصفوفة تدوين المصفوفة:

x[ 0 ] = 1;
y[ 2 ] // 3

تكرار

يحتوي الصفيف على خاصية طولية مفيدة للتكرار:

for ( var i = 0; i < a.length; i++ ) {
  // Do something with a[i]
}

عندما يكون الأداء حرجًا ، فإن قراءة خاصية الطول مرة واحدة فقط يمكن أن تساعد في تسريع الأمور. يجب استخدام هذا فقط عند اكتشاف اختناق أداء:

for ( var i = 0, j = a.length; i < j; i++ ) {
  // Do something with a[i]
}

يعرّف متغير آخر متغيرًا يتم ملؤه لكل تكرار ، مما يؤدي إلى إزالة ترميز الصفيف من الحلقة. لا يعمل عندما يحتوي الصفيف على 0 أو سلاسل فارغة!

for ( var i = 0, item; item = a[i]; i++ ) {
  // Do something with item
}

يوفر jQuery عامًا لكل دالة للتكرار فوق عنصر الصفائف ، بالإضافة إلى خصائص الكائنات:

var x = [ 1, 2, 3 ];
jQuery.each( x, function( index, value ) {
  console.log( "index", index, "value", value );
});

العائق هو أن يتم استدعاء رد الاتصال في سياق كل قيمة وبالتالي تفقد سياق الكائن الخاص بك إذا كان ذلك ممكناً. أكثر على هذا أدناه في وظائف.

يمكن أيضًا استخدام خاصية الطول لإضافة عناصر إلى نهاية الصفيف. هذا يعادل استخدام طريقة الدفع:

var x = [];
x.push( 1 );
x[ x.length ] = 2;
x // [ 1, 2 ]

سترى كلا الصيغتين كثيرًا عند النظر في شفرة مكتبة جافا سكريبت.

الطرق الأخرى المضمنة هي الانعكاس ، والانضمام ، والتغيير ، والإلغاء ، والبوب ​​، والشريحة ، واللصق والفرز:

var x = [ 0, 3, 1, 2 ];
x.reverse()      // [ 2, 1, 3, 0 ]
x.join(" – ")    // "2 - 1 - 3 - 0"
x.pop()          // [ 2, 1, 3 ]
x.unshift( -1 )  // [ -1, 2, 1, 3 ]
x.shift()        // [ 2, 1, 3 ]
x.sort()         // [ 1, 2, 3 ]
x.splice( 1, 2 ) // [ 2, 3 ]

ملاحظة: لا تقوم طريقة .unshift () بإرجاع خاصية طول في Internet Explorer.

منطقية الافتراضي

مصفوفة ، بغض النظر عما إذا كانت تحتوي على عناصر أم لا ، لا يتم افتراضها بشكل خاطئ:

![] // false
!![] // true

صفيف <نوع> تدوين

في واجهة برمجة تطبيقات jQuery ، غالبًا ما تجد طريقة تصنيف Array <Type>:

dragPrevention    Array<String>

يشير هذا إلى أن الطريقة لا تتوقع فقط صفيفًا كوسيطة ، ولكنها تحدد أيضًا النوع المتوقع. يتم استدلال الترميز من تدوين جزيئات Java 5 (أو قوالب C ++).

كائن يشبه المصفوفة

إما مصفوفة جافا سكريبت حقيقية أو كائن جافا سكريبت يحتوي على خاصية length وخصائص عدد صحيح غير سالب من 0 حتى length - 1 . تتضمن هذه الحالة الأخيرة كائنات شبيهة بالصفيف شائعة في التعليمة البرمجية المستندة إلى ويب مثل كائن arguments وكائن NodeList إرجاعه بواسطة العديد من أساليب DOM.

عندما تقبل واجهة برمجة تطبيقات jQuery كائنات عادية أو كائنات شبيهة بالكتابة ، سيؤدي كائن عادي ذو خاصية length إلى تشغيل سلوك Array-Like.

PlainObject

نوع PlainObject هو كائن جافا سكريبت يحتوي على أزواج صفر أو أكثر من قيم المفتاح. الكائن العادي هو ، بعبارة أخرى ، Object كائن. يتم تعيين "عادي" في وثائق jQuery لتمييزه عن الأنواع الأخرى من كائنات JavaScript: على سبيل المثال ، الصفائف null المعرفة من قبل المستخدم ، وكائنات المضيف مثل document ، وكلها لها قيمة typeof "object". jQuery.isPlainObject() طريقة jQuery.isPlainObject() ما إذا كانت الوسيطة التي تم تمريرها كائنًا عاديًا أم لا ، كما هو موضح أدناه:

  var a = [];
  var d = document;
  var o = {};
 
  typeof a; // object
  typeof d; // object
  typeof o; // object
 
  jQuery.isPlainObject( a ); // false
  jQuery.isPlainObject( d ); // false
  jQuery.isPlainObject( o ); // true

لا شيء

الكلمة null عبارة عن حرف جافا سكريبت يستخدم بشكل شائع للتعبير عن عدم وجود قيمة مقصودة.

تاريخ

نوع التاريخ هو كائن JavaScript يمثل لحظة واحدة في الوقت. يتم إنشاء مثيل لكائنات التاريخ باستخدام دالة منشئها ، والتي تقوم بشكل افتراضي بإنشاء كائن يمثل التاريخ والوقت الحاليين.

new Date();

لإنشاء كائن تاريخ لتاريخ ووقت بديل ، قم بتمرير الوسيطات الرقمية بالترتيب التالي: عام ، شهر ، يوم ، ساعة ، دقيقة ، ثانية ، ميلي ثانية واحدة - على الرغم من ملاحظة أن الشهر يستند إلى الصفر ، في حين أن الحجج الأخرى هي واحدة -على أساس. فيما يلي إنشاء كائن تاريخ يمثل 1 يناير 2014 ، الساعة 8:15.

new Date( 2014, 0, 1, 8, 15 );

وظيفة

يمكن أن تكون إما وظيفة في جافا سكريبت إما مسمى أو مجهول. يمكن تعيين أي دالة لمتغير أو تمريرها إلى طريقة ، ولكن تمرير وظائف العضو بهذه الطريقة يمكن أن يؤدي إلى استدعائها في سياق كائن آخر (أي مع كائن "آخر" مختلف).

function named() {}
var handler = function() {}

ترى الكثير من الوظائف المجهولة في jQuery code:

$( document ).ready(function() {});
$( "a" ).click(function() {});
$.ajax({
  url: "someurl.php",
  success: function() {}
});

نوع الوظيفة "وظيفة".

الحجج

داخل وظيفة "المتغيرات" الخاصة متغير متاح دائما. يشبه صفيف في أنه يحتوي على خاصية طول ، ولكنه يفتقر إلى أساليب مضمنة صفيف. عناصر المصفوفة الزائفة هي وسيطة استدعاء الدالة.

function log( x ) {
  console.log( typeof x, arguments.length );
}
log(); // "undefined", 0
log( 1 ); // "number", 1
log( "1", "2", "3" ); // "string", 3

يحتوي كائن الوسائط أيضًا على خاصية مستدقة ، والتي تشير إلى الوظيفة التي تكون داخلها. على سبيل المثال:

var awesome = function() { return arguments.callee; }
awesome() === awesome // true

السياق ، الدعوة والتقديم

في JavaScript ، يشير المتغير "هذا" دائمًا إلى السياق الحالي. بشكل افتراضي ، يشير "هذا" إلى كائن الإطار. ضمن دالة يمكن تغيير هذا السياق ، اعتماداً على كيفية استدعاء الدالة.

يتم استدعاء جميع معالجات الأحداث في jQuery بعنصر المعالجة كسياق.

$( document ).ready(function() {
  // this refers to window.document
});
$( "a" ).click(function() {
  // this refers to an anchor DOM element
});

يمكنك تحديد السياق الخاص بمكالمة دالة باستخدام استدعاء الوظائف المضمنة وتطبيقها. الفرق بينهما هو كيفية تمرير الحجج. تقوم المكالمة بتمرير جميع الوسيطات من خلال الوسيطات للدالة ، في حين أن تطبيق يقبل صفيف كوسيطة.

function scope() {
  console.log( this, arguments.length );
}
scope() // window, 0
scope.call( "foobar", [ 1, 2 ] ); // "foobar", 1
scope.apply( "foobar", [ 1, 2 ] ); // "foobar", 2

نطاق

في JavaScript ، تكون كل المتغيرات المعرفة داخل الدالة مرئية فقط داخل نطاق الوظائف هذا. خذ بعين الاعتبار المثال التالي:

// global
var x = 0;
(function() {
  // private
  var x = 1;
  console.log( x ); // 1
})();
console.log( x ); // 0

يعرّف المتغير x في النطاق العالمي ، ثم يعرّف الدالة المجهولة وينفذها على الفور (الأقواس الإضافية مطلوبة للتنفيذ الفوري). داخل الدالة يتم تعريف متغير آخر x بقيمة مختلفة. تكون مرئية فقط داخل هذه الوظيفة ولا تقوم بالكتابة فوق المتغير الشامل.

إغلاق

يتم إنشاء الإغلاق كلما تم الوصول إلى متغير يتم تعريفه خارج النطاق الحالي من داخل نطاق داخلي معين. في المثال التالي ، يظهر عداد المتغيرات داخل وظائف الإنشاء والزيادة والطباعة ، ولكن ليس خارجها.

function create() {
  var counter = 0;
  return {
    increment: function() {
      counter++;
    },
    print: function() {
      console.log( counter );
    }
  }
}
var c = create();
c.increment();
c.print(); // 1

يتيح لك هذا النمط إنشاء كائنات بطرق تعمل على بيانات غير مرئية للخارج - وهي أساس البرمجة القائمة على الكائنات.

نمط الوكيل

يمنحك الجمع بين المعرفة السابقة كمطور جافا سكريبت قدرًا كبيرًا من القوة. تتمثل إحدى طرق الجمع بين ذلك في تطبيق نمط بروكسي في جافا سكريبت ، مما يتيح أساسيات البرمجة الموجهة للوجه (AOP):

(function() {
  // log all calls to setArray
  var proxied = jQuery.fn.setArray;
  jQuery.fn.setArray = function() {
    console.log( this, arguments );
    return proxied.apply( this, arguments );
  };
})();

أعلاه يلتف رمزه في وظيفة لإخفاء "proxied" - المتغير. يقوم بحفظ jQuery's setArray-method في إغلاق ويكتب فوقه. يقوم الوكيل بعد ذلك بتسجيل جميع المكالمات إلى الأسلوب وتفويض المكالمة إلى الأصل. يضمن استخدام تطبيق (هذا ، الحجج) أن المتصل لن يكون قادرًا على ملاحظة الفرق بين الطريقة الأصلية والطريقة المحفوظة بالبروكسي.

أتصل مرة أخرى

الاستدعاء عبارة عن دالة JavaScript بسيطة يتم تمريرها إلى بعض الطرق كوسيطة أو خيار. بعض عمليات الاسترجاعات هي مجرد أحداث ، تُسمى لإعطاء المستخدم فرصة للرد عندما يتم تشغيل حالة معينة. يستخدم نظام الأحداث jQuery مثل عمليات الاسترجاعات في كل مكان:

$( "body" ).click(function( event ) {
  console.log( "clicked: " + event.target );
});

تقدم معظم عمليات الاسترجاعات الحجج والسياق. في مثال event-handler ، يتم استدعاء رد الاتصال مع وسيطة واحدة ، حدث. يتم تعيين السياق إلى عنصر التعامل ، في المثال أعلاه ، document.body.

بعض عمليات الاسترجاعات مطلوبة لإرجاع شيء ما ، بينما يقوم الآخرون بعمل قيمة إرجاع اختيارية. لمنع إرسال نموذج ، يمكن أن يرسل معالج أحداث إرسال false:

$( "#myform" ).submit(function() {
  return false;
});

بدلاً من إرجاع false دائمًا ، يمكن أن يراجع الاستدعاء حقول النموذج للتأكد من صلاحيتها ، ويعرض false فقط عندما يكون النموذج غير صالح.

خطأ

يتم طرح مثيل كائن خطأ كاستثناء عند حدوث خطأ وقت التشغيل. يمكن أيضًا استخدام الخطأ كأساس لتعريف فئات استثناء مخصصة للمستخدم. في JavaScript يمكن طرح خطأ كما هو موضح أدناه:

throw new Error( "The argument provided is incorrect" );

يمكن أيضًا طرح خطأ بواسطة المحرك في بعض الظروف. على سبيل المثال ، عند محاولة الوصول إلى خاصية null :

var obj = null;
console.log( obj.foo() );

منتخب

يتم استخدام محدد في jQuery لتحديد عناصر DOM من وثيقة DOM. هذه الوثيقة ، في معظم الحالات ، وثيقة DOM موجودة في جميع المتصفحات ، ولكن يمكن أيضا أن تكون وثيقة XML تم استلامها عبر Ajax.

تعتبر المحددات عبارة عن تركيبة من CSS والإضافات المخصصة. يتم توثيق جميع المحددات المتاحة في jQuery على صفحة API Selectors .

هناك الكثير من الإضافات التي تستفيد من مختارات jQuery بطرق أخرى. يقبل المكون الإضافي للتحقق صلاحية محدد لتحديد التبعية ، سواء كانت المدخلات مطلوبة أم لا:

emailrules: {
  required: "#email:filled"
}

سيؤدي ذلك إلى جعل مربع الاختيار الذي يحمل الاسم "emailrules" مطلوبًا فقط إذا أدخل المستخدم عنوان بريد إلكتروني في حقل البريد الإلكتروني ، تم تحديده عبر معرفه ، وتمت تصفيته عبر محدد مخصص ": معبأ" الذي يوفره ملحق التحقق من الصحة.

إذا تم تحديد Selector كنوع الوسيطة ، فإنه يقبل كل شيء يقبله مُنشئ jQuery ، على سبيل المثال. سلاسل ، عناصر ، قوائم العناصر.

هدف

يقوم نظام أحداث jQuery بتهيئة كائن الحدث وفقًا لمعايير W3C. يتم ضمان كائن الحدث إلى معالج الأحداث (لا توجد تدقيقات لـ window.event مطلوب). وهو يقوم بتسوية الهدف ، و targetTarget ، والتي ، و metaKey ، وخصائص pageX / Y ، ويوفر كل من stopPropagation () وأساليب preventDefault ().

يتم توثيق جميع هذه الخصائص ، ويصاحبها أمثلة ، في صفحة كائن الحدث .

تتمثل الأحداث القياسية في نموذج كائن المستند في: blur ، focus ، load ، resize ، scroll ، unload ، unload dblclick ، click ، dblclick ، mousedown ، mouseup ، mousemove ، mouseover ، mouseout ، mouseenter ، mouseleave ، change ، select ، submit ، keydown ، keypress, و keyup . نظرًا لأن أسماء أحداث DOM لها معان محددة مسبقًا لبعض العناصر ، لا يوصى باستخدامها لأغراض أخرى. يمكن لنموذج حدث jQuery تشغيل حدث بأي اسم على عنصر ، ويتم نشره في شجرة DOM التي ينتمي إليها هذا العنصر ، إن وجدت.

جزء

يمكن أن يحتوي عنصر في نموذج كائن المستند (DOM) على سمات ونصوص وأطفال. ويوفر وسائل لاجتياز الوالدين والأطفال والحصول على سماتها. ولكن بسبب التناقضات في مواصفات وتطبيق واجهة برمجة التطبيقات لـ DOM ، يمكن لهذه الطرق أن تشكل تحديًا للاستخدام. يوفر jQuery "مجمّع" حول هذه العناصر للمساعدة في التفاعل مع DOM. ولكن في بعض الأحيان ، ستعمل مباشرةً مع عناصر DOM ، أو تشاهد أساليب تقبل (أيضًا) عناصر DOM كوسيطة.

كلما قمت باستدعاء طريقة .each() jQuery أو أحد أساليب الحدث الخاصة بها في مجموعة jQuery ، يتم تعيين سياق وظيفة رد الاتصال - this - إلى عنصر DOM.

بعض خصائص عناصر DOM تتوافق تمامًا بين المتصفحات. جرب هذا المثال على التحقق من صحة onblur بسيطة:

$( "input[type='text']" ).on( "blur", function() {
  if( !this.value ) {
    alert( "Please enter some text!" );
  }
});

يمكنك استبدال هذا this.value بـ $(this).val() للوصول إلى قيمة إدخال النص عبر jQuery ، لكن في هذه الحالة لن تحصل على أي شيء.

نص

النص عبارة عن عقدة من طراز كائن المستند (DOM) تمثل المحتوى النصي Element أو سمة. خذ بعين الاعتبار التعليمة البرمجية التالية:

<p id="target"><b>Hello</b> world</p>

إذا قمت باسترداد أطفال الفقرة في المثال كما يلي:

var children = document.getElementById( "target" ).childNodes;

تحصل على طفلين. الأول هو Element يمثل علامة b . الطفل الثاني هو عقدة النص التي تحتوي على سلسلة "العالم".

مسج

يحتوي كائن jQuery على مجموعة من عناصر طراز كائن المستند (DOM) التي تم إنشاؤها من سلسلة HTML أو محددة من مستند. نظرًا لأن أساليب jQuery غالبًا ما تستخدم محددات CSS لمطابقة العناصر من مستند ، فغالبًا ما تسمى مجموعة العناصر في كائن jQuery بمجموعة من "العناصر المتطابقة" أو "العناصر المحددة".

يتصرف كائن jQuery نفسه كثيرًا مثل صفيف؛ يحتوي على خاصية length ويمكن الوصول إلى العناصر الموجودة في الكائن بواسطة الأرقام الرقمية الخاصة بهم [0] إلى [length-1] . لاحظ أن كائن jQuery ليس في الواقع كائن مصفوفة Javascript ، لذلك ليس لديه كافة أساليب كائن Array true مثل join() .

في معظم الأحيان ، سوف تستخدم الدالة jQuery () لإنشاء كائن jQuery. يمكن أيضاً الوصول إلى jQuery() بواسطة الاسم المستعار الأحادي المألوف الخاص به $() ، إلا إذا قمت باستدعاء jQuery.noConflict() لتعطيل هذا الخيار. تقوم العديد من أساليب jQuery بإرجاع كائن jQuery نفسه ، بحيث يمكن إجراء مكالمات الأسلوب هذه بالسلاسل:

في مكالمات API التي تقوم بإرجاع jQuery ، ستكون القيمة التي يتم إرجاعها هي كائن jQuery الأصلي ما لم يتم توثيقه بطريقة أخرى بواسطة ذلك API. تقوم أساليب واجهة برمجة التطبيقات (API) مثل .filter() أو .filter() بتعديل مجموعة واردة وبالتالي إرجاع كائن jQuery جديد.

$( "p" ).css( "color", "red" ).find( ".special" ).css( "color", "green" );

عندما تستخدم طريقة jQuery "مدمرة" قد تؤدي إلى تغيير مجموعة العناصر في كائن jQuery ، مثل .filter() أو .find() ، تقوم هذه الطريقة فعليًا بإرجاع كائن jQuery جديد بالعناصر الناتجة. للرجوع إلى كائن jQuery السابق ، استخدم أسلوب .end() .

قد يكون كائن jQuery فارغا ، ولا يحتوي على عناصر DOM. يمكنك إنشاء كائن jQuery فارغ بـ $() (أي تمرير أية وسيطات على الإطلاق). قد يكون كائن jQuery أيضًا فارغًا إذا لم يحدد المحدد أي عناصر ، أو إذا قامت إحدى الطرز المتسلسلة بتصفية جميع العناصر. إنه ليس خطأ؛ أي طرق أخرى تسمى على أن كائن jQuery ببساطة ليس لها أي تأثير نظرا لعدم وجود عناصر للعمل عليها. لذلك ، في هذا المثال إذا لم تكن هناك إدخالات سيئة على الصفحة ، فلن يتم تلوين أي عناصر باللون الأحمر:

$( ".badEntry" ).css({ color: "red" });

مدعوم

بعض الدالات Ajax jQuery إرجاع الكائن XMLHttpRequest (XHR) الأصلي أو تمريرها كوسيطة إلى معالجات نجاح / خطأ / كاملة ، بحيث يمكنك إجراء معالجة إضافية أو مراقبة الطلب. لاحظ أن وظائف Ajax تقوم فقط بإرجاع أو تمرير كائن XHR عند استخدام كائن XHR بالفعل في الطلب. على سبيل المثال ، تستخدم طلبات JSONP وطلبات GET عبر النطاقات عنصرًا برمجيًا بدلاً من كائن XHR.

على الرغم من أن كائن XHR هو معيار ، إلا أن هناك اختلافات في سلوكه على المتصفحات المختلفة. ارجع إلى موقع WHATWG وشبكة مطوري Mozilla للحصول على مزيد من المعلومات:

jqXHR

اعتبارًا من jQuery 1.5 ، ترجع الطريقة $.ajax() كائن jqXHR ، وهو مجموعة شاملة من كائن XMLHTTPRequest. لمزيد من المعلومات ، راجع قسم jqXHR في إدخال $ .ajax

Thenable

أي كائن يحتوي على طريقة then .

كائن مؤجل

اعتبارًا من jQuery 1.5 ، يوفر الكائن Deferred طريقة لتسجيل عدة عمليات رد اتصال في قوائم انتظار رد ذاتي مدار ، استدعاء قوائم انتظار رد الاتصال بالشكل المناسب ، ونقل حالة النجاح أو الفشل لأي دالة متزامنة أو غير متزامنة.

وعد كائن

يوفر هذا الكائن مجموعة فرعية من أساليب الكائن Deferred ( then ، done ، fail ، always ، pipe ، progress ، state promise ) لمنع المستخدمين من تغيير حالة المؤجل.

Callbacks الكائن

كائن متعدد الأغراض يوفر طريقة فعالة لإدارة قوائم رد الاتصال. وهو يدعم إضافة وإزالة وحرق وتعطيل الاستدعاءات. يتم إنشاء كائن $.Callbacks الدالة $.Callbacks ثم يتم إرجاعها بواسطة معظم أساليب تلك الدالة.

وثيقة XML

كائن مستند تم إنشاؤه بواسطة محلل XML DOM للمستعرض ، عادةً من سلسلة تمثل XML. تحتوي مستندات XML على دلالات مختلفة عن مستندات HTML ، ولكن معظم طرق الانتقال والمعالجة التي توفرها jQuery ستعمل معهم.

يجزم

إشارة إلى أو مثيل الكائن الذي يحمل كل تأكيدات QUnit. راجع وثائق API لـ QUnit.assert للحصول على التفاصيل.