Category: jQuery

  • Pengenalan AJAX Menggunakan jQuery

    AJAX (Asynchronous JavaScript and XML) adalah sebuah teknik pemrograman yang memungkinkan kita melakukan pertukaran data antara client dengan server secara asynchronous, yang artinya komunikasi terjadi di belakang layar sehingga halaman web tidak harus dimuat ulang hanya untuk mengganti sebagian dari isinya.

    Sebelum era jQuery, pemrograman AJAX sangat sulit dilakukan, karena berhubungan dengan pengaksesan DOM menggunakan JavaScript. Terimakasih kepada jQuery, sehingga pemrograman menggunakan teknik AJAX bisa menjadi lebih mudah dan cepat.

    Penerapan teknik AJAX yang paling sederhana adalah untuk memanggil dan memuat sebuah dokumen HTML ke dalam DOM. Teknik ini dapat dengan mudah kita wujudkan dengan menggunakan fungsi load() dari jQuery. Secara singkat fungsi ini berguna untuk memuat data (HTML dokumen) dari server dan menyisipkannya ke dalam elemen yang sesuai.

    $(document).ready(function() {
      $('#tombol').click(function(){
        $('#container').load('content.html');
        });
      });
    

    Selain menggunakan fungsi jQuery load(), potongan kode di atas juga menggunakan fungsi click(). Fungsi ini akan dieksekusi ketika ada click event (user meng-klik sebuah tombol atau link). Fungsi ini mirip dengan JavaScript event onClick.

    Berikut ini adalah source code lengkapnya. Untuk mencoba kode ini, dibutuhkan juga sebuah file HTML yang akan dipanggil, beri nama “isi.html” dan isilah dengan sembarang kode HTML.

    <!DOCTYPE html>
    <html>
    <head>
      <script src="http://code.jquery.com/jquery-latest.js"></script>	
      <script type="text/javascript">
      $(document).ready(function() {
        $('#tombol').click(function(){
          $('#kontainer').load('isi.html');
          });
        });
      </script>
    </head>
    <body>
      <input type="button" id="tombol" value="klik di sini">
      <div id="kontainer">
        <!--Isi dari file content.html akan ditampilkan di sini-->
      </div>
    </body>
    </html>
    

    Ketika tombol diklik, AJAX memanggil URL “isi.html” dan menyisipkannya ke dalam DOM. DOM yang dimaksud di sini adalah sebuah elemen dengan id=”kontainer”.

    Karena fungsi jQuery click() mirip dengan event JavaScript onClick, maka source code di atas dapat juga ditulis seperti berikut:

    <!DOCTYPE html>
    <html>
    <head>
      <script src="http://code.jquery.com/jquery-latest.js"></script>
      <script type="text/javascript">		
      function loadIsi(){
        $('#kontainer').load('isi.html');
      }
      </script>
    </head>
    <body>	
      <a href="#tombol" onclick="loadIsi(); return false;">load isi</a>
      <div id="kontainer">
        <!--Isi dari file content.html akan ditampilkan di sini-->
      </div>
    </body>
    </html>
    
  • Tab Sederhana dengan jQuery

    simple tab

    Keuntungan yang didapat dengan membuat sebuah navigasi tab dengan jQuery adalah halaman tidak perlu dimuat ulang hanya untuk berganti tab yang aktif. Kenapa hal itu bisa terjadi? Karena sebenarnya semua halaman yang ada di seluruh tab sudah dimuat sejak pertama kali kita membuka web. Teknik ini yang dipakai untuk bizcard saya. Berikut ini adalah kode jQuery yang digunakan.

    $(document).ready(function() {
      $('#tab1').fadeIn('slow');
      $('ul#nav li a').click(function() {
        $('ul#nav li a').removeClass('aktif');
        $(this).addClass("aktif");
        $('.tab_konten').hide();
        var aktif = $(this).attr('href');
        $(aktif).fadeIn('slow');
        return false;
      });
    });
    

    Sedangkan ini adalah HTML-nya.

    <ul id="nav"><!-- navigasi -->
      <li><a href="#tab1" class="about aktif"><span>About Me</span></a></li>
      <li><a href="#tab2" class="network"><span>Networks</span></a></li>
      <li><a href="#tab3" class="contact"><span>Contact</span></a></li>
    </ul>
     
    <div id="konten"><!-- mulai konten -->
      <div style="display: none;" id="tab1" class="tab_konten">
        <!-- konten #tab1 -->
      </div>
      <div style="display: none;" id="tab2" class="tab_konten">
        <!-- konten #tab2 -->
      </div>
      <div style="display: none;" id="tab3" class="tab_konten">
        <!-- konten #tab3 -->
      </div>
    </div>
    

    Penjelasannya adalah sebagai berikut. Pada kondisi awal, ketiga tab dalam posisi tidak aktif (style=”display: none;”). Kemudian pada saat halaman web dimuat pertama kali, #tab1 diaktifkan (lihat baris ke-2 kode JavaScript) dengan efek fade in, sekaligus menampilkan isinya.

    Berikutnya adalah ketika ada sebuah tab yang diklik, semua class=”aktif” dihilangkan kecuali pada tab yang dipilih (baris ke-4 dan ke-5 kode JavaScript). Begitu pula dengan isinya, semua disembunyikan kecuali tab yang dipilih.

    Bagaimana cara untuk menemukan tab yang aktif? Cari attribute href pada class yang aktif, value-nya menunjukkan mana tab yang harus ditampilkan (baris ke-7 dan ke-8 kode JavaScript).

    Catatan ini disadur dan ditulis ulang dengan modifikasi seperlunya dari blog ini. Gambar juga diambil dari situ.

  • Mengubah Element Position secara Dinamis dengan jQuery

    jQuery fixed-element behavior
    Baru-baru ini situs jejaring sosial Facebook menambah sebuah widget kecil di sebelah kanan atas pada halaman Home masing-masing user, yang berisi aktifitas terbaru dari teman-teman kita. Uniknya, ketika saya menggulir halaman ke bawah, alih-alih menghilang dari layar monitor, widget tersebut malah menempel pada menu bar biru yang menjadi ciri khas Facebook.

    Meskipun beberapa orang menganggap fitur tersebut tidak penting, tapi efek yang dihasilkannya sangat keren. Sebenarnya saya pernah menggunakan efek seperti itu pada beberapa proyek dengan bantuan jQuery. Di bawah ini adalah kode yang saya gunakan untuk menghasilkan efek tersebut.

    $(document).ready(function() {
     
      var menu = $("#menu");
      var menuOriTop = menu.offset().top;
      var view = $(window);
     
      view.bind("scroll resize", function(){
     
        var menuViewTop = view.scrollTop();
        if ((menuViewTop > menuOriTop) && !menu.is(".menu-fixed")){
     
          menu.removeClass("menu-absolute").addClass("menu-fixed");
        }
     
        else if ((menuViewTop <= menuOriTop) && menu.is(".menu-fixed")){
     
          menu.removeClass("menu-fixed").addClass("menu-absolute");
        }
      });
    });
    &#91;/code&#93;
    Penjelasannya, kode <strong>jQuery</strong> di atas akan memeriksa apakah elemen menu telah digulir melewati batas atas mula-mula, jika sudah melewati, maka atribut <em>position</em> dari elemen menu akan diubah menjadi <em>fix</em>. Sebaliknya, jika elemen menu kurang dari batas atas mula-mula, maka atribut <em>position</em> akan diubah menjadi <em>absolute</em>.
    
    Untuk lebih memahami, akan saya berikan kode HTML dan CSS sederhana. Semoga cukup untuk menambah koleksi potongan kode Anda ;)
    [code lang="js" htmlscript="true"]
    <!DOCTYPE HTML>
    <html>
    <head>
    <title>Float Menu</title>
    <style type="text/css">
      #header { height: 200px; width:800px; background-color: #3333FF; }
      .sidebar { float: left; width: 110px; border: 1px solid #e6e6e6; }
      .content { float: left; height: 2000px; width: 690px; margin-right:10px; background-color:#00FF00 }
      #menu { width:100px; height:200px; background-color: #F0F0F0; }
      div.menu-absolute {	position: absolute; top: 210px; }
      div.menu-fixed { solid #E0E0E0;	top: 10px; position: fixed; }
      .footer { clear: both; width: 800px; background-color:#FF3399 }
     
    </style>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script type="text/javascript">
    $(document).ready(function() {
     
      var menu = $("#menu");
      var menuOriTop = menu.offset().top;
      var view = $(window);
     
      view.bind("scroll resize", function(){
     
        var menuViewTop = view.scrollTop();
        if ((menuViewTop > menuOriTop) && !menu.is(".menu-fixed")){
     
          menu.removeClass("menu-absolute").addClass("menu-fixed");
        }
     
        else if ((menuViewTop <= menuOriTop) && menu.is(".menu-fixed")){
     
          menu.removeClass("menu-fixed").addClass("menu-absolute");
        }
      });
    });
     
    </script>
    </head>
    <body>
      <div id="header">Header</div>
      <div class="content">content here</div>
      <div class="sidebar">
      <div id="menu" class="menu-absolute">Menu Float</div>
      </div>
      <div class="footer">footer</div>
    </body>
    </html>