Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] Funkcje jak w jQuery
Dex1987
post
Post #1





Grupa: Zarejestrowani
Postów: 246
Pomógł: 0
Dołączył: 28.09.2004

Ostrzeżenie: (0%)
-----


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 ();
Go to the top of the page
+Quote Post
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


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.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
Dex1987
post
Post #3





Grupa: Zarejestrowani
Postów: 246
Pomógł: 0
Dołączył: 28.09.2004

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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 ?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Dex1987
post
Post #5





Grupa: Zarejestrowani
Postów: 246
Pomógł: 0
Dołączył: 28.09.2004

Ostrzeżenie: (0%)
-----


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ć.
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Dex1987
post
Post #7





Grupa: Zarejestrowani
Postów: 246
Pomógł: 0
Dołączył: 28.09.2004

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




np. dopisz metode get() smile.gif

sam wymysliles ze chcesz miec lancuszek smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
erix
post
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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';


Ten post edytował erix 14.01.2009, 15:14:31


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
erix
post
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Dex1987
post
Post #12





Grupa: Zarejestrowani
Postów: 246
Pomógł: 0
Dołączył: 28.09.2004

Ostrzeżenie: (0%)
-----


~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';
Go to the top of the page
+Quote Post
erix
post
Post #13





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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;
}


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 20:34