W MooTools 1.2 usunięto funkcje, które stosowałem dość często - $E i $ES. Pozwalały one wybrać odpowiednio pierwszy lub wszystkie elementy zgodne z podanym selektorem i znajdujące się w podanym elemencie. Były one swoistym skrótem dla metod getElementsBySelector, getElement i getElements.

Gdyby ktoś chciał jednak móc je zastosować to prezentuję poniżej ich implementacje w MooTools 1.2:

function $E(selector, scope){
    return $($defined(scope) ? scope : document.body).getElement(selector);
}
 
function $ES(selector, scope){
    return $($defined(scope) ? scope : document.body).getElements(selector);
}

Pierwszy argument to oczywiście selektor określający jakie elementy chcemy wyselekcjonować, a drugi argument jest opcjonalny i pozwala ograniczyć zakres poszukiwań do wybranego elementu - musi to być uchwyt do elementu lub jego id.

Dla tych, którzy chcieliby w drugim argumencie móc zastosować także selektor przygotowałem lekko zmienioną wersję funkcji $E i $ES pozwalającą stosować w obu argumentach selektory:

function $E(selector, scope){
    return $$($defined(scope) ? scope : document.body)[0].getElement(selector);
}
 
function $ES(selector, scope){
    return $$($defined(scope) ? scope : document.body)[0].getElements(selector);
}

Należy pamiętać, że w tym wypadku nie można podać id bez znaku # na początku.

Niezwykle istotną sprawą przy tworzeniu skryptów jest możliwość łatwego poruszania się po drzewie dokumentu - w MooTools mamy kilka metod, które pozwalają nam na dostęp do różnych elementów względem innych elementów. Dodatkowo zapoznamy się bliżej z funkcją $$, która pozwala na selekcję kilku elementów naraz według określonych parametrów.

Czytaj dalej...

String.toHash()

01 września, 2008

Pewnie komuś się przyda metoda odwrotna to metody obiektu Hash - toQueryString, czyli metoda obiektu String - toHash:

 
String.implement({ 
	toHash: function(){ 
		var hash = new Hash(); 
		this.split('&').each(function(el){
			var t = el.split('='); 
			hash.include(t[0], t[1]);  
		});
		return hash; 
	}
});
 

Stworzyłem mały UserJS, który zamienia wszystkie linki do statusów w kokpicie:

blip

na przyciski dodające link do treści nowego statusu - Blip easyPermalinks, może komuś się przyda i ułatwi życie ;)

Każdy kto programował w JavaScript przyzwyczaił się zapewne do zdarzenia onLoad występującego w momencie załadowania się danej strony WWW. Z reguły wraz z tym zdarzeniem swoje działanie rozpoczynały wszelkie skrypty JS związane z DOM, bo wywołanie ich wcześniej niechybnie skończyłoby się błędem związanym z odwoływaniem do elementu, który jeszcze w DOM nie istnieje.

Czytaj dalej...