Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Funkcje jak w jQuery
Forum PHP.pl > Forum > Przedszkole
Dex1987
Witam,

chciałbym napisać coś jak jQuery, ale o wiele prostsze i na własne potrzeby. Zastanawia mnie jak skonstruować klasę, aby uzyskać taki zapis:

Kod
$('ID').hide ();
skowron-line
Kod
String.prototype.hide = function(){
alert( this.value; );
}


Ex
Kod
<script type="text/javascript">
window.onLoad = $( 'oInput' ).hide();
</script>
<input type="text" id="oInput" value="abc">

*pisane z palca.
Dex1987
Wyskrobałem coś takiego:

Kod
var String = function (ID)
{
    return document.getElementById (ID);
}

String.prototype.Content = function ()
{
    alert (this.innerHTML);
}

window.onload = function ()
{
    alert (String ('Test').Content ());
}


ale to niestety nie działa.
nospor
no bo to nie ma prawa dzialac. String() zwraca ci obiekt DOM a ty na nim chcesz zrobic COntent(). Content() masz przypisany do string przeciez smile.gif

ps: czemu nie uzyjesz gotowego liba ?
Dex1987
Cytat(nospor @ 14.01.2009, 13:59:13 ) *
no bo to nie ma prawa dzialac. String() zwraca ci obiekt DOM a ty na nim chcesz zrobic COntent(). Content() masz przypisany do string przeciez smile.gif


Rozumiem, w sumie to było oczywiste. Dalej jednak nie wiem jak mogę rozszerzyć klase String o dodatkowe metody.

Cytat(nospor @ 14.01.2009, 13:59:13 ) *
ps: czemu nie uzyjesz gotowego liba ?


Chce napisać coś małego, a przy tym się czegoś nauczyć.
nospor
chcac pisac kropkowo (jest jakas ladna nazwa na to ale zapomnialem smile.gif ) kazda metoda String musi zwracac tenze obiekt. Inaczej takiej kropkowej drogi nie osiągniesz.
Dex1987
No ok, ale jak będę zwracał obiekt klasy, to jak mogę się później dostać do danego elementu. Możesz podać przykładowy kod?
nospor
np. dopisz metode get() smile.gif

sam wymysliles ze chcesz miec lancuszek smile.gif
erix
Cytat
chciałbym napisać coś jak jQuery, ale o wiele prostsze i na własne potrzeby.

Blebleble, ale chłopakowi mieszacie. Zamiast najpierw zadeklarować funkcję $, to Wy o jakichś stringach. tongue.gif

Wystarczy przejrzeć źródła jQ, aby się dowiedzieć, że główna funkcja jest deklarowana jako:
Kod
var jQuery = window.jQuery = window.$ = function( selector, context ) {
    // The jQuery object is actually just the init constructor 'enhanced'
    return new jQuery.fn.init( selector, context );
};

A cała reszta (czyli po kropkach), to metody obiektu. Ale obiektówka w JS, to już osobny temat, o którym już napisano wieeele.

A głównym "sercem" byłaby chyba konstrukcja a'la:
Kod
window.$ = function(sel){
return document.getElementById(sel):
}

I potem idziesz jak po drzewie DOM:
Kod
$('ident').style.color = '#FFF';
nospor
Cytat
Zamiast najpierw zadeklarować funkcję $, to Wy o jakichś stringach.

Chcial jak Jquery. w jquery $ nie zwraca obiektu DOM tongue.gif
A String sam na poczatku zadeklarowal
erix
Cytat
Chcial jak Jquery. w jquery $ nie zwraca obiektu DOM

:
Cytat
ale o wiele prostsze i na własne potrzeby

Opisałem tylko przykładowe, niech się wysili. winksmiley.jpg Poza tym:
Cytat
A cała reszta (czyli po kropkach), to metody obiektu.
winksmiley.jpg
Dex1987
~erix, nie dokładnie o to chodzi, do czegoś takiego doszedłem. Chodzi mi o ty że chciałbym sobie dopisywać własne funkcję. Np:

Kod
$('ID').hide ();


Która w rzeczywistości wykonywała:

Kod
$('ID').style.display = 'none';
erix
No to mówiłem - zamiast $ robisz obiekt, który posiada odpowiednie metody:

http://nefariousdesigns.co.uk/archive/2006...ted-javascript/
Kod
function circle(radius)
{
  this.radius = radius;
  this.getArea = function()
  {
    return (this.radius * this.radius) * Math.PI;
  };

  return true;
}
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.