מתודות של אלמנט ב-MooTools: חלק ראשון

אזהרה: אחוז השימוש ב-MooTools ירדו דרמטית ועדיף שלא להשתמש בו. אם אתם מחפשים ספרית JavaScript - שווה לכם לבדוק את jQuery במקום

במאמר הקודם למדנו על סלקטורים ב-MooTools.
מה שחשוב בנוגע לסלקטורים, בין אם מדובר בסלקטורים שמחזירים לנו אלמנט אחד ($ או getElement) ובין סלקטורים שמחזירים לנו מערך של אלמנטים ($$ או getElements), שלא מדובר במשהו שרק 'בוחר' אלא לוקח את אובייקט ה-DOM ומוריש לו את תכונות והמתודות של אובייקט שנקרא אלמנט MooTools. האובייקט הזה מכיל מגוון של מתודות שימושיות אבל חשוב להבין שמדובר באובייקט של ממש שאנחנו גם יכולים ליצור אותו יש מאין ויש לו גם constructor משלו.

יצירת אובייקט מסוג אלמנט

ה-constructor של האלמנט מקבל שני פרמטרים – הראשון הוא סוג האלמנט (למשל a או p – סוגי תגיות HTML) והשני הוא אובייקט שבו יש את הפרמטרים. למשל, יצירת קישור תהיה באופן הבא:


var myAnchor = new Element('a', {
	'href': 'http://www.internet-israel.com',
	'class': 'myClass',
	'html': 'I am new link, click or mouse over me!',
	'styles': {
		'display': 'block',
		'border': '1px solid black'
		},
	'events': {
		'click': function(){
	    		alert('clicked');
		},
		'mouseover': function(){
		    alert('mouseovered');
		}
	}
});

אין יותר מדי מה להסביר כאן, אני מעביר פרמטר ראשון שהוא סוג האלמנט (במקרה הזה a) ואת האובייקט שמכיל את כל התכונות שלו כולל events. אם אני רוצה לראות את זה בחי, אני צריך להכניס את האובייקט הזה לתוך ה-DOM שלי. בניתי פונקציה קטנה שמכניסה את האלמנט שנוצר בכל לחיצה על הכפתור:

מה שחשוב הוא להבין את הקונסטרקטור וכיצד יוצרים אלמנט חדש.

מתודת inject

אחרי שיצרנו אלמנט חדש, אנחנו יכולים להכניס אותו ל-DOM שלנו באמצעות מתודת inject שמכניסה את האלמנט שלנו לתוך אלמנט אחר. בדוגמא עם הכפתור, אני מכניס בכל פעם את האלמנט שיצרתי (myAnchor) אל תוך אלמנט אחר שנקרא myDiv. אני יכול לבחור להוסיף את האלמנט שלי לתוך אלמנט אחר לפני (top) או אחרי (before) הילדים של האלמנט האחר, אחריו (after) או לפני (before) האלמנט האחר עצמו.

בדוגמא שלעיל, השתמשתי במתודת inject על מנת להכניס את myAnchor לתוך myDiv לפני הילדים שלו (כלומר, השתמשתי בארגומנט top) :


var myAnchor = new Element('a', {
	'href': 'http://www.internet-israel.com',
	'class': 'myClass',
	'html': 'I am new link, click or mouse over me!',
	'styles': {
		'display': 'block',
		'border': '1px solid black'
		},
	'events': {
		'click': function(){
	    		alert('clicked');
		},
		'mouseover': function(){
		    alert('mouseovered');
		}
	}
});

<strong>myAnchor.inject($('myDiv'), 'top');
</strong>

Set\Get

כמו בכל אובייקט שמכבד את עצמו, גם באלמנט ב-MooTools יש Set ו-Get. צמד המתודות האלו מאפשרות לי לשנות תכונות של האלמנט ולאחזר אותן. שימו לב שמדובר בתכונות שיש להן ביטוי באלמנט. אני לא יכול להחזיר תכונות שנמצאות ב-CSS למשל.

כך למשל אשתמש ב-set על מנת לשנות את כל הצבעים של הפסקאות לכחול:


$$('p').set('styles', {
    'color': 'blue',
});

אני בוחר עם הסלקטור $$ את כל האלמנטים של p ומשנה את התכונה styles לכחול. התכונה מקבלת אובייקט שיכול להכיל עוד דברים חוץ מצבע. והנה הדוגמא החיה.

אם אני רוצה לקבל מידע על תכונה מסוימת, אפשר להשתמש ב-get, אם לאחר שלחצתי על הכפתור ושיניתי את כל ה-style של הפסקאות לכחול ואני רוצה לבדוק את זה, אני אריץ את הפקודה הבאה:


alert($$('p').get('style'));

כיוון שבחרתי באמצעות $$ מערך של אלמנטים, אני אקבל סטרינג ארוך של כל התכונות style שיש לכל פסקה ופסקה. נסו ותהנו:

מתודת erase

מתודת erase מאפשרת לי למחוק תכונה מסוימת. כך למשל, אם אני רוצה למחוק את התכונה שהוספתי בדוגמה הקודמת, אני אבקש למחוק את כל ה-style של הפסקאות השונות:


$$('p').erase('styles');

מתודות Property לאובייקטים של DOM

אם באלמנט מסוג אובייקט DOM עסקינן, ניתן להשתמש במתודות אחרות המתאימות יותר לאלמנט DOM ומקבילות ל-get,set ו-erase. השמות של המתודות האלו הם: setProperty, getProperty ו-removeProperty.

מתודות properties לאובייקטים של DOM

בדומה ל-set,get,erase ול-setProperty, getProperty, removeProperty שהן המקבילות שלהן, יש לי שלוש מתודות שמטפלות בכמה תכונות ולא רק בתכונה אחת. בואו ונניח קישור חביב:


<a id="myNiceAnchor">This is nice anchor</a>

נניח ואני רוצה להצמיד לקישור החביב הזה שתי תכונות: תכונה של href ותכונה של title. איך אני עושה את זה? אני יכול להשתמש ב-set או ב-setProperty (עדיף ב-setProperty כי מדובר באלמנט שנמצא ב-DOM). אבל אז אני אצטרך להשתמש בשתי פקודות. אם אני אשתמש ב: setProperties אני יכול להעביר אובייקט שבו יש כמה וכמה תכונות.

This is nice anchor

והקוד יראה כך:


function setMultiple() {
$('myNiceAnchor').setProperties({
'href' : 'http://www.internet-israel.com',
'title' : 'This is my Title'
});
}

אם אני רוצה לקבל מהלינק החביב הזה את התכונות שלו, אני אשתמש ב-getProperties:

על מנת לקבל את התכונות האלו, כל מה שהייתי צריך זה להעביר מערך (לא אובייקט) עם השמות. מתודת getProperties מחזירה לי אובייקט שבו יש את כל התכונות. הקוד שרץ אחרי שאני לוחץ על הכפתור נראה ככה:


var myResult = $('myNiceAnchor').getProperties('href','title');
alert("href : "+ myResult.href + "\ntitle : " + myResult.title);

אם אני רוצה להשמיד חלק מהתכונות בלינק החביב, כל מה שעלי לעשות זה להשתמש ב-removeProperties. השימוש בו פשוט ביותר:


$('myNiceAnchor').removeProperties('href','title');


והנה הדוגמא החיה:

מתודות ששולטות על class

גם class הוא תכונה של אלמנט ויש לנו ארבע מתודות שונות לשליטה על ה-class.

הוספת class לאלמנט

בדומה ל-set ול-setProperty, מתודת addClass מוסיפה class חדש לאלמנט. לדוגמא:


$('myElement').addClass('newClass');

בדיקה אם לאלמנט מסוים יש class

מתודת hasClas מקבילה ל-get ול-getProperty. היא מחזירה לנו true או false אם ה-class לא נמצא.


$('myElement').hasClass('testClass'); //returns true

מחיקת removeClass

מתודה זו המקבילה ל-erase ול-removeProperty מוחקת את ה-class.


$('myElement').removeClass('newClass');

מתודת toggle

זו מתודה מגניבה שבודקת אם יש class מסוים. במידה ויש – היא תסיר אותו. במידה ואין – היא תוסיף אותו. אידיאלי למפסקים שונים. אני אדגים באמצעות שימוש ב-div חביב:

A nice DIV

בדקו עם firebug כדי לראות איך בכל לחיצה ה-class של ה-div משתנה. את זה עשיתי עם השורה הבאה:


$('myNiceDiv').toggleClass('myClass');

המאמר הבא יהיה מתודות של אלמנט ב-MooTools: חלק שני.

אזהרה: אחוז השימוש ב-MooTools ירדו דרמטית ועדיף שלא להשתמש בו. אם אתם מחפשים ספרית JavaScript - שווה לכם לבדוק את jQuery במקום
כדאי תמיד להשאר מעודכנים! הרשמו לעדכונים של האתר במייל! - המייל יישלח כל יום ראשון בעשר בבוקר ויכיל אך ורק את המאמרים שהתפרסמו באינטרנט ישראל. ללא ספאם, ללא הצפות, ללא בלגנים. 🙂

אהבתם? לא אהבתם? דרגו!

לא אהבתי בכלללא אהבתיבסדראהבתיאהבתי מאוד (אין הצבעות)

תגיות: פורסם בקטגוריה: MooTools

אל תשארו מאחור! יש עוד מה ללמוד!

הצטרפו לעדכונים!

העדכונים נשלחים אך ורק כאשר האתר מתעדכן.

רן בר-זיק

רן בר-זיק כותב כל המאמרים באינטרנט ישראל, מפתח אינטרנט מנוסה במגוון שפות ופלטפורמות.
ניתן ליצור איתי קשר באמצעות:
כתובת המייל שלי: info@internet-israel.com.
פרופיל הלינקדאין שלי
הטוויטר שלי
פרופיל הפייסבוק שלי
אני תמיד שמח לייעץ ולעזור, אך בשל עומס הפניות הרב, אני לא תמיד מצליח לענות במהירות.

מאמרים אחרונים