<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Feelinc.Me &#187; dom manipulation</title>
	<atom:link href="http://www.feelinc.me/tag/dom-manipulation/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.feelinc.me</link>
	<description>It&#039;s All About Me</description>
	<lastBuildDate>Tue, 24 Aug 2010 21:46:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Trik mengolah HTML on-the-fly menggunakan jQuery + JSON</title>
		<link>http://www.feelinc.me/experience/trik-mengolah-html-on-the-fly-menggunakan-jquery-json/</link>
		<comments>http://www.feelinc.me/experience/trik-mengolah-html-on-the-fly-menggunakan-jquery-json/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 03:50:28 +0000</pubDate>
		<dc:creator>Feelinc</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Experience]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[bekerja dengan html jquery]]></category>
		<category><![CDATA[dom manipulation]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[manipulasi html]]></category>
		<category><![CDATA[tips & trik]]></category>

		<guid isPermaLink="false">http://1sn0where.wordpress.com/?p=35</guid>
		<description><![CDATA[Terkadang kita bingung bagaimana cara terbaik atau yang relevan untuk membuat atau mengolah html dengan menggunakan javascript, terdapat beberapa cara : &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; 1. Dengan membuat tag-tag html langsung $(document).ready(function(){ var list = ''; for (var i=0; i&#60;2; i++) { list += '&#60;li&#62;'+i+'&#60;/li&#62;'; } }); ('#list').html(list); maka akan menghasilkan : &#60;ul id=&#34;list&#34;&#62; &#60;li&#62;0&#60;/li&#62; &#60;li&#62;1&#60;/li&#62; &#60;/ul&#62; Tetapi [...]]]></description>
			<content:encoded><![CDATA[<p>Terkadang kita bingung bagaimana cara terbaik atau yang relevan untuk membuat atau mengolah html dengan menggunakan javascript, terdapat beberapa cara :</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p><strong>1. Dengan membuat tag-tag html langsung</strong></p>
<pre class="brush: plain;">
$(document).ready(function(){
var list = '';
for (var i=0; i&lt;2; i++) {
list += '&lt;li&gt;'+i+'&lt;/li&gt;';
}
});

('#list').html(list);
</pre>
<p>maka akan menghasilkan :</p>
<pre class="brush: plain;">
&lt;ul id=&quot;list&quot;&gt;
&lt;li&gt;0&lt;/li&gt;
&lt;li&gt;1&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Tetapi bagaimana jika kita bekerja dengan seorang web designer yang tugasnya membuat html + css dan web designer tersebut enggan menyentuh code javascript tersebut, misal code javascript nya sudah terlalu kompleks, juga terkadang kita takut jika ada yang menyentuh code javascript kita. Kemudian hal ini juga menyebabkan code javascript kita terlihat tidak bersih karena bercampur dengan tag-tag html dan bisa membingungkan.<span id="more-35"></span></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p><strong>2. Dengan mengambil tag-tag html melalui AJAX</strong></p>
<pre class="brush: plain;">
$(document).ready(function(){
$(&quot;#links&quot;).load(&quot;http://www.test.com/load/links.html&quot;);
});
</pre>
<p>HTML respon yang dihasilkan dari links.php sebagai berikut :</p>
<pre class="brush: plain;">
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Main Page 1 &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Main Page 2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Main Page 3&lt;/a&gt;&lt;/li&gt;
</pre>
<p>Maka akan menghasilkan :</p>
<pre class="brush: plain;">
&lt;ul id=&quot;links&quot;&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Main Page 1 &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Main Page 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Main Page 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Hal ini memang terlihat lebih mudah, tetapi hal ini akan berdampak pada response time, karena tag-tag html yang kita load terlalu banyak karakternya padahal kita membutuhkan nama-nama link dan mungkin url nya, kemudian jika isi dari link-link tersebut tidak boleh kita hardcode, jadi harus berdasarkan referensi dari database / code php.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p><strong>3. Dengan menggunakan jQuery Template plugin</strong></p>
<p>Dengan menggunakan hal ini memang lebih bagus dari pilihan yang tadi. Kita bisa menyimpan/membuat html yang akan dipakai didalam tag  dengan kita tambahkan style=&#8221;display:none;&#8221; sehingga nanti tinggal diolah oleh si jQuery Template plugin, tetapi jika kita seseorang yang juga bekerja dengan menggunakan Smarty maka ini akan menjadi masalah karena akan terjadi tabrakan.</p>
<p>Bagaimana dengan melakukan load html dari server seperti no.2 diatas, kemudian kita load juga daftar nama-nama link dan url nya dari server, kemudian tinggal kita parse menggunakan jQuery Template plugin. Ini mengakibatkan kita harus melakukan 2 kali request. Tetapi penggunaan jQuery Template plugin ini tidak mudah dan lumayan kompleks.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<h2><strong>Cara yang terbaik adalah !!!!</strong></h2>
<p><strong>1. Dengan mengolah html yang sudah siap pada </strong></p>
<p>Dengan menyimpan/membuat html yang akan dipakai didalam tag  dengan kita tambahkan style=&#8221;display:none;&#8221; :</p>
<pre class="brush: plain;">
&lt;ul id=&quot;links&quot;&gt;
&lt;li class=&quot;sys_example&quot; style=&quot;display:none;&quot;&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Kemudian kita olah :</p>
<pre class="brush: plain;">
$(document).ready(function(){
var container = $('#links');

/* kita cari tag &lt;li&gt; */
var obj = $('li.sys_example', container);
var item;

for (var i=0; i&lt;2; i++) {

/* kita clone tag &lt;li&gt; tersebut */
item = obj.clone();

/* kita isi nomor kedalam &lt;li&gt; tersebut */
item.html(i);

/* kita buang class sys_example supaya tidak ter-clone lagi dan buat menjadi display:block supaya tidak tersembunyi */
item.removeClass('sys_example').css('display', 'block');

/* kemudian kita masukan kedalam &lt;ul&gt; dengan id links yang sudah ada di html */

item.appendTo(container );
}

delete item;
delete obj;
delete container;

});
</pre>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p><strong>2. Dengan mengambil data dari server dan contoh html yang sudah siap pada<br />
</strong></p>
<p>Dengan menyimpan/membuat html yang akan dipakai didalam tag  dengan kita tambahkan style=&#8221;display:none;&#8221; :</p>
<pre class="brush: plain;">
&lt;ul id=&quot;links&quot;&gt;
&lt;li class=&quot;sys_example&quot; style=&quot;display:none;&quot;&gt;&lt;a href=&quot;&quot;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Kemudian kita load daftar nama-nama link dan urlnya dari server dan langsung diolah terhadap html yang sudah kita siapkan barusan :</p>
<p>format JSON yang akan kita terima dari server adalah sebagai berikut :</p>
<pre class="brush: plain;">
[
{&quot;url&quot;: &quot;http://www.test.com/home.php&quot;, &quot;nama&quot;: &quot;Home&quot;},
{&quot;url&quot;: &quot;http://www.test.com/about.php&quot;, &quot;nama&quot;: &quot;About&quot;},
{&quot;url&quot;: &quot;http://www.test.com/contact.php&quot;, &quot;nama&quot;: &quot;Contact&quot;}
]
</pre>
<p>Ingat ketika kita bangun format JSON tersebut di server jangan seperti diatas karena akan memperlambat response time, yaitu kita buang spasi atau enter dan buat menjadi 1 baris.</p>
<pre class="brush: plain;">
$(document).ready(function(){

/* disini kita melakukan request ke server untuk mengambil daftar link*/
$.getJSON(&quot;http://www.test.com/load/links.php&quot;,

function(json){

/* Cek apakah format json sudah benar, jika tidak masuk kedalam if, maka format masih salah */
if (json){
var item;
var obj;

/* kita ambil dulu si &lt;ul&gt; */
var container = $('#links');

for(item in json) {

/* kita cari tag &lt;li&gt; beserta isinya dan kita clone */
obj = $('li.sys_example', container).clone();

/* kita cari tag &lt;a&gt; dan isi atribut href dengan url, juga isi si &lt;a&gt; dengan nama link nya */
obj.find('a').attr('href', json[item].url).text(json[item].nama);

/* kita buang class sys_example supaya tidak ter-clone lagi dan buat menjadi display:block supaya tidak tersembunyi */
obj.removeClass('sys_example').css('display', 'block');

/* kemudian kita masukan kedalam &lt;ul&gt; dengan id links yang sudah ada di html */
obj.appendTo(container);
}

delete container;
delete obj;
delete item;
}

});
});
</pre>
<p>Pasti kita merasa &#8220;wah code javascript nya jadi tambah banyak dong !!!!&#8221;.</p>
<p>Tetapi dengan cara seperti diatas kita mempermudah pekerjaan designer. Designer dapat menambah atribut &#8211; atribut pada tag html nya dengan leluasa dan bisa melakukan test langsung terlebih dahulu terhadap tampilan dengan menghilangkan display:none, asal tidak menghilangkan nama class dan id yang sudah javascript pakai.</p>
<p>Hal ini hanya contoh kecil, mungkin terasa kurang maksimal penggunaanya, tetapi yang paling bermanfaat pada konsep ini adalah jika kita sedang membuat sesuatu yang lebih kompleks.</p>
<p style="text-align: justify;">Terima Kasih, semoga bermanfaat.</p>
<p style="text-align: justify;">“People Always Forget How Fast We Did A Job, But They Will Remember How well We Did It”</p>
]]></content:encoded>
			<wfw:commentRss>http://www.feelinc.me/experience/trik-mengolah-html-on-the-fly-menggunakan-jquery-json/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
