Memulai jQuery


==jQuery ?==
Apa itu jQuery? Dari situsnya “jQuery adalah sejenis pustaka JavaScript yang baru. jQuery adalah pustaka JavaScript yang cepat dan ringkas yang menyederhanakan traversing dokumen HTML, penanganan event, animasi, dan interaksi Ajax untuk mempercepat pengembangan web”. Mari kita liat contoh sederhana penggunaan jQuery:

Klik di sini untuk menimbulkan atau menyembunyikan

Heh, cukup sederhana bukan untuk membuat efek pada DOM? Untuk memudahkan penggunaan jQuery, ada baiknya Anda mengenal sedikit tentang DOM (Document Object Model), CSS (Cascading Style Sheets) dan JavaScript. Persiapan lainnya dalah jquery.js. Anda bisa mengunduh jQuery di sini. Ada dua format yang bisa diunduh, yaitu: terkompresi (ukuran lebih kecil) dan tidak terkompresi (baik untuk debugging dan mengetahui sulap di balik jQuery). Jika sudah mengunduhnya, pastikan jquery dimasukkan ke dalam dokumen HTML Anda:



Sesuaikan path src nya dengan direktori jquery.js berada. Kebanyakan apa yang kita kerjakan dengan jQuery adalah membaca dan memanipulasi DOM, jadi sebelum kita bermain DOM dengan jQuery pastikan DOM sudah diload. jQuery menyediakan fungsi $(document).ready() dimana semua fungsi yang kita definisikan di dalamnya akan segera di load setelah DOM di load dan sebelum konten (gambar, text, dsb) di load. Dengan memanfaatkan fungsi ini kita bisa memisahkan behavior (JavaScript) dari “struktur” (HTML). Lebih jelasnya perhatikan kode JavaScript berikut:



Bagian dari HTML yang dirujuk adalah:

Klik di sini untuk menimbulkan atau menyembunyikan

Dengan fungsi $(document).ready() saya telah memisahkan behavior dan struktur, karena saya tidak perlu meng-attach event onclick pada element a dengan id toggle-hidden-div (baris 1). Dengan jQuery, element pada dokumen dapat kita daftarkan event tanpa perlu menuliskannya di struktur (HTML). Contoh lainnya:

Setiap link di dalam div ini telah didaftarkan event onmouseover dan onmouseout segera setelah DOM di load. Apa yang kode ini lakukan hanyalah mendaftarkan event onmouseover dan onmouseout pada semua link dalam div #attach-event dan mengubah style pada link tersebut. Perhatikan warna latar, tulisan dan bold yang terjadi. Ini tanpa penggunaan CSS, tapi manipulasi DOM dengan fungsi css() jQuery. Kodenya:

$(document).ready(function() {
$("#attach-event a").mouseover(function() {$(this).css({backgroundColor: "black", fontWeight: "bold"; color: "white"});}).mouseout(function() {$(this).css({backgroundColor: "#EAF3FA", fontWeight: "normal", color: "black"});});
});

Contoh di atas sejauh ini adalah menunggu DOM di load, mendapatkan element melalui selector (akan saya bahas setelah ini), mendaftarkan penangan event ke element tersebut kemudian saat event terjadi penangan akan beraksi (entah memberikan effect, memanipulasi style atau mendapatkan nilai atribut dari element). jQuery menyediakan fungsi untuk penanganan event seperti click(), mouseover(), mouseout(), submit(), change(), dsb. Semua fungsi tersebut dapat dibaca di referensi API jQuery khusus Event.
==Selector==
Untuk mendapatkan element dalam DOM, jQuery menyediakan beragam selector. Yang sering digunakan adalah CSS dan XPath Selector. Contoh:

Kodenya:

$("#alert-toggle-anchor").click(function(){alert($(this).text()};);

Dengan penulisan kode JavaScript biasa, mendapatkan element dengan id alert-toggle-anchor document.getElementById("alert-toggle-anchor"), dengan jQuery menjadi $("#alert-toggle-anchor"). String berupa id element merupakan parameter bagi konstruktor class jQuery. Jadi untuk menginisialisasi objek jQuery adalah dengan $(params) dimana params adalah string yang umumnya merupakan nama element, class atau id dari element di DOM. Tanda $ dalam JavaScript adalah karakter yang legal dan valid untuk identifier, jQuery menggunakannya sebagai alias dari class jQuery. Jadi $(“table”) dan jQuery(“table”) akan melakukan hal yang sama. Dengan objek jQuery, element dalam DOM bisa kita manipulasi dengan method / fungsi yang tersedia dari objek jQuery, seperti click() untuk mendaftarkan event, slideToggle() untuk memberikan efek pada element terserbut, atau text() untuk mendapatkan text di dalam element. Contoh selector lainnya:

  • $(“#nama-id-element”)
    Misal untuk mendapatkan element dengan id alert-toggle-anchor dan memberinya warna text putih dan latar hitam:
    $("#alert-toggle-anchor").css({color: "white", backgroundColor: "black"});
  • $(“.nama-class-element”)
    Misal untuk mendapatkan element dengan nama class hideMe dan menyembunyikan element tersebut $(".hideMe").hide();
  • $(“nama-element)
    Misal untuk mendapatkan semua element p dan memberinya class yellow: $("p").addClass("yellow");
  • $(“elementF > childElementF:first-child”)
    Misal untuk mendapatkan semua element span yang merupakan anak pertama dari element p dan memberinya class biru: $("p > span:first-child").addClass("biru");
  • $(“input[@name=nama_element]“)
    Misal untuk mendapatkan element input dengan name “username” dan memperoleh value-nya. $("input[@name=username]").val();
  • $(“element_name:odd”)
    Selector di atas akan mengambil element ganjil dari target element_name. Metode ini sering digunakan pada element list dan table. Misal kita ingin memberikan class alt ke tr ganjil dari table dengan class mytable $("table.mytable tr:odd").addClass("alt");

Ragam selector lainnya dapat dilihat di API jQuery untuk Selector.
==Menjelajah DOM==
Selain selector dengan CSS, XPath, dan kustom lainnya, jQuery juga menyediakan fungsi-fungsi untuk menjelajahi DOM (traversing) seperti:

$("tr").css({border: "1px solid #000"}).filter(".alt").each(function(i){
    $(this).append("yeah " + i);
});

Pertama, cari semua tr, lalu beri border hitam setebal 1 pixel, dari semua tr tersebut ambil yang hanya memiliki class alt (filter). Dari tr yang sudah difilter, masing-masing (each) tambahkan text “yeah ” + i, dimana i merupakan index (dimulai dari 0) dari hasil tr yang sudah difilter. Contoh lainnya, misal unordered list :

  • item ke-1
  • item ke-2
  • item ke-3
  • item ke-4

Kita ingin membuat list ganjil dapat diklik dan jika diklik akan menampilkan list dibawahnya, yang sebelumnya sudah dihide. Kodenya:

$("#list").find("li:even").hide().end().find("li:odd").click(function(){$(this).next().slideToggle();});

Kode bisa dipersingkat dengan cara chaining, dimana objek jQuery hanya memilih satu kali element dengan id list. Dengan metode chaining ukuran kode menjadi lebih kecil dibanding dengan kode berikut yang kurang lebih sama:

$("#list").find("li:even").hide();
$("#list").find("li:odd").click(function(){$(this).next().slideToggle();});

Yang pertama dilakukan adalah mendapatkan element dengan id list, lalu cari anak element li yang genap, sembunyikan element genap tersebut. Hal serupa bisa dilakukan dengan $("#list li:even").hide(), tapi dengan fungsi end() penulisan kode menjadi lebih singkat dan baik. Dengan end() kita mundur ke state element terpilih sebelumnya, yaitu element dengan id list. Lalu dilanjutkan lagi dengan mencari anak element li ganjil dan mendaftarkan penangan event onclick, dimana element list berikutnya (next()) akan diberi efek slideToggle saat element li ganjil ini di click.

Kata this disini merujuk ke element sebenarnya (yaitu element li:odd). Jika menjadi parameter bagi class jQuery (dalam hal ini menjadi $(this)), maka bisa dimanfaatkan method dari jQuery untuk Manipulasi DOM, Traversing, Event, dsb. Jika hanya this, maka akan mengacu ke elemen sebenarnya dan bisa kita manfaatkan properties atau method yang tersedia pada element tersebut, misal this.href, this.value, this.focus() atau this.reset()

Dokumentasi API DOM Traversing bisa dibaca di sini.
==Atribut dan Manipulasi DOM==
Selain menyediakan fungsi untuk mendapatkan element dalam DOM, jQuery juga menyediakan fungsi-fungsi untuk mendapatkan atribut dari element. Misal:


Kodenya:

$("#mybutton").click(function(){alert("type="+$("input[@name=myinputtxt]").attr("type")+"\nvalue="+$("input[@name=myinputtxt]").val());});

Untuk mendapatkan nilai atribut element gunakan fungsi attr(). Fungsi ini juga bisa untuk menset nilai atribut dan membuang atribut dari element. Selain atribut element, jQuery juga menyediakan fungsi untuk memanipulasi class dari element, seperti: addClass(), hasClass(), removeClass dan toggleClass(). Contoh lainnya, yaitu mengubah konten div berikut:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi


Untuk mengganti konten dalam div tersebut kita bisa menggunakan fungsi html() untuk memanipulasi element dalam DOM.

$(function(){
    $("#lorem-ipsum-button").click(function(){
        $("#lorem-ipsum-div").html("hell yeah..jQuery rocks!!");
    });
});

Serupa dengan method innerHTML, method html(value) akan mengisi konten dari elemen dengan value. Ada juga method text(value) yang mengisi konten dari elemen dengan value, namun HTML diescape sehingga “<" dan ">” diganti dengan HTML entiti. Contoh manipulasi lainnya adalah append(). Misal:

dalam sebuah paragraf

Dengan menggunakan append()

$("#mydiv").append("

paragraf ke-2

")

maka menjadi:

dalam sebuah paragraf paragraf ke-2

Banyak manipulasi untuk menyisipkan konten ke dalam element seperti : append(), appendTo, prepend(), prependTo(). Selain menyisipkan konten ke dalam, jQuery juga menyediakan fungsi untuk menyisipkan ke luar setelah/sebelum element, menyalin, mengganti dan menghapus element. Lebih lengkapnya ada di dokumentasi jQuery.
==Membuat Element On The Fly==
Dengan javascript kita dapat membuat element kemudian menyisipkannya ke element lain dengan cara berikut:

var el = document.getElementById(id_element);
var new_el = document.createElement("div");
new_el.appendChild(document.createTextNode("konten dalam div baru"));
el.appendChild(new_el);

Dengan jQuery:

$("
konten dalam div baru
").appendTo("#id_element");

Semoga bermanfaat.

Referensi:

25 thoughts on “Memulai jQuery

  1. saya masih awam, bisa di jelasin lebih detail lagi ? atau diberi contoh file (.html) atau (.css) atau (.js) masing masing namanya apa dan bagaimana menghubungkannya sehingga bisa tampil di local. sy sangat ingin belajar, tapi bingung…. trima kasih

  2. sangat bermanfaat sekali mas .. terima kasih banyak , kalo bisa sekalian DEMO site nya mas ,,, hihihi ..

    Keep RocKin GUyss … !!

  3. ahaaaaaaaaaaaaa…. akhirnya kesampaian juga gw bljr Jquery,,,
    thanks for tutorial , its so much help me…
    tapi mesti ngerti byk JS na dl yakss,,hihihi secara ekye kan newbi di dunia Web or anything about Program…
    ARIGAT0 …. ^-^

  4. mas… mohon bantuannya.. saya coba code ini.. :

    $(document).ready(function() {
    $(“#attach-event a”).mouseover(function() {$(this).css({backgroundColor: “black”, fontWeight: “bold”; color: “white”});}).mouseout(function() {$(this).css({backgroundColor: “#EAF3FA”, fontWeight: “normal”, color: “black”});});
    });

    test

    msh ada 1 error mas.. mohon petunjuknya thanks ilmunya.. :)
    errornya spt ini :
    missing } after property list
    Line 4

  5. wow…

    makasih banyak banget mas.
    angkat aku jadi murid dunk… :D sumpah saya baru pertama kali berhasil mengaplikasikan efek jquery :D (jaid malu.) implementasinya ada di artikelindonesia.us, kalo mau numang nyepam narok link monggo mas :D

  6. Ketika Manipulasi DOM, Semisal sisipin DIV dengan class=’test’ dengan perintah append. index DIV yang di Append tersebut tidak di kenali function $(‘.test’).click yang di define sebelum perintah Append tersbut. Langkah yang di ambil define ulang function $(‘.test’).click, Adakah Cara / Trik lain untuk mengakalinya agar tidak membuat function di dalam function terus menerus.

    Mohon Bagi Pengalamannya.
    -Thnx-
    rahmatul_jkt@yahoo.com —> Just YM
    rahmatul.hidayat@gmail.com —> Email

  7. MAs.. bagus banget artikelnya.. oh ya mas, saya pernah dengar tentang JQuery UI. itu sama nggak sich ma JQuery yg mas jelasin..????

    Thanks..

    jawab : jquery ui adalah salah satu plugin jquery, sama seperti jquery tool, ada beberapa script bisa berjalan hanya menggunakan core engine jquery, namun ada pula script yang memerlukan plugin tambahan, jquery ui menyediakan plugin2 seperti autocomplete, accordion, tab, slider, dll, contoh website yang mengimplementasikan jquery ui adalah http://www.asiarooms.com

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>