<?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>Kinopyo Blog &#187; jQuery</title>
	<atom:link href="http://www.kinopyo.com/blog/category/jquery/feed" rel="self" type="application/rss+xml" />
	<link>http://www.kinopyo.com/blog</link>
	<description>プログラマとしてRuby, Rails, iPhone, iPad,Macなどなどと向き合う日々のログポース</description>
	<lastBuildDate>Sun, 08 Jan 2012 14:59:09 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<atom:link rel='hub' href='http://www.kinopyo.com/blog/?pushpress=hub'/>
		<item>
		<title>jQuery checkbox checked event</title>
		<link>http://www.kinopyo.com/blog/jquery-checkbox-checked-event</link>
		<comments>http://www.kinopyo.com/blog/jquery-checkbox-checked-event#comments</comments>
		<pubDate>Tue, 22 Nov 2011 08:50:47 +0000</pubDate>
		<dc:creator>kinopyo</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[checkbox]]></category>

		<guid isPermaLink="false">http://www.kinopyo.com/blog/?p=2521</guid>
		<description><![CDATA[
jQueryでチェックボックスの状態を監視するイベントはclick eventを使う。
チェックされたかを判断するには$(&#8220;#some_checkbox&#8221;).is(&#8216;:checked&#8217;)がいい。
CoffeeScriptでのサンプルコード：

change eventも監視はできるが、取れる値は遅延されるみたいです。

The change event is sent to an element when its value changes. This event is limited to input elements, textarea boxes and select elements. For select boxes, checkboxes, ...]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>jQueryでチェックボックスの状態を監視するイベントは<em>click event</em>を使う。</p>
<p>チェックされたかを判断するには<em>$(&#8220;#some_checkbox&#8221;).is(&#8216;:checked&#8217;)</em>がいい。</p>
<p>CoffeeScriptでのサンプルコード：</p>
<div id="gist-1385217" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="nx">$</span><span class="p">(</span><span class="s">&quot;</span><span class="err">#</span><span class="s">some_checkbox&quot;</span><span class="p">).</span><span class="nx">click</span> <span class="nf">(e) -&gt;</span></div><div class='line' id='LC2'>&nbsp;&nbsp;<span class="k">if</span> <span class="nx">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="o">is</span><span class="p">(</span><span class="s">&#39;:checked&#39;</span><span class="p">)</span></div><div class='line' id='LC3'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1"># actions when checked</span></div><div class='line' id='LC4'>&nbsp;&nbsp;<span class="k">else</span></div><div class='line' id='LC5'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1"># actions when not checked</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1385217/ea0bcc2bd518cd0a08109d57bf96aed833868e24/checkbox.coffee" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1385217#file_checkbox.coffee" style="float:right;margin-right:10px;color:#666">checkbox.coffee</a>
            <a href="https://gist.github.com/1385217">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p><em>change event</em>も監視はできるが、取れる値は遅延されるみたいです。</p>
<blockquote>
<p>The change event is sent to an element when its value changes. This event is limited to input elements, textarea boxes and select elements. For select boxes, checkboxes, and radio buttons, the event is fired immediately when the user makes a selection with the mouse, but for the other element types the event is deferred until the element loses focus.</p>
<p><cite><a href="http://api.jquery.com/change/" target="_blank">http://api.jquery.com/change/</a></cite>
</p></blockquote>
<p>参考：<a href="http://forum.jquery.com/topic/jquery-checkbox-checked-event" target="_blank">http://forum.jquery.com/topic/jquery-checkbox-checked-event</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.kinopyo.com/blog/jquery-checkbox-checked-event/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CoffeeScriptでjQueryのdocument.readyの書き方</title>
		<link>http://www.kinopyo.com/blog/coffeescript-jquery-document-ready</link>
		<comments>http://www.kinopyo.com/blog/coffeescript-jquery-document-ready#comments</comments>
		<pubDate>Sat, 09 Jul 2011 12:23:27 +0000</pubDate>
		<dc:creator>kinopyo</dc:creator>
				<category><![CDATA[CoffeeScript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.kinopyo.com/blog/?p=1990</guid>
		<description><![CDATA[
下記どちらもOKです。明示的に書きたいときはjQueryで。


]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>下記どちらもOKです。明示的に書きたいときはjQueryで。</p>
<div id="gist-1073555" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'>jQuery -&gt;</div><div class='line' id='LC2'>&nbsp;&nbsp;alert &quot;hello&quot;</div><div class='line' id='LC3'><br/></div><div class='line' id='LC4'>$ -&gt;</div><div class='line' id='LC5'>&nbsp;&nbsp;alert &quot;hello&quot;</div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1073555/1bd557b4ba9160e1d4e163b21202a92f87b4a3d1/coffee-script-jquery-document-ready" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1073555#file_coffee_script_jquery_document_ready" style="float:right;margin-right:10px;color:#666">coffee-script-jquery-document-ready</a>
            <a href="https://gist.github.com/1073555">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

</div>
]]></content:encoded>
			<wfw:commentRss>http://www.kinopyo.com/blog/coffeescript-jquery-document-ready/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQueryでselectorと一致する最初のものを取る</title>
		<link>http://www.kinopyo.com/blog/jquery-selector-get-the-first-matched-element</link>
		<comments>http://www.kinopyo.com/blog/jquery-selector-get-the-first-matched-element#comments</comments>
		<pubDate>Fri, 01 Jul 2011 15:05:33 +0000</pubDate>
		<dc:creator>kinopyo</dc:creator>
				<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.kinopyo.com/blog/?p=1967</guid>
		<description><![CDATA[
一年くらい使ってなかったので、ほぼ忘れてしまいました。そのためのメモという感じです。

// idがwrapperの中の最初のdivを取る
$(&#34;#wrapper&#34;).find(&#34;div:first&#34;)

この:xxxがBasic Filter(基本フィルタ)と読んで、他にもいろいろあります。

:first 先頭の要素を選択する。
:last 末尾の要素を選択する。
:not(selector) 指定したセレクターを除外した要素を選択する。
:even 偶数番の要素を選択する。
:odd 奇数番の要素を選択する。
:eq(index) インデックス指定した要素を選択する。
:gt(index) 指定したインデックスより後の要素を選択する。
:lt(index) 指定したインデックスより前の要素を選択する。
:header h1,h2などのヘッダ要素を選択する。
:animated アニメーション中の要素を選択する。

英語API
日本語API


]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>一年くらい使ってなかったので、ほぼ忘れてしまいました。そのためのメモという感じです。</p>
<pre class="brush: javascript;">
// idがwrapperの中の最初のdivを取る
$(&quot;#wrapper&quot;).find(&quot;div:first&quot;)
</pre>
<p>この:xxxがBasic Filter(基本フィルタ)と読んで、他にもいろいろあります。</p>
<blockquote>
<p>:first 先頭の要素を選択する。</p>
<p>:last 末尾の要素を選択する。</p>
<p>:not(selector) 指定したセレクターを除外した要素を選択する。</p>
<p>:even 偶数番の要素を選択する。</p>
<p>:odd 奇数番の要素を選択する。</p>
<p>:eq(index) インデックス指定した要素を選択する。</p>
<p>:gt(index) 指定したインデックスより後の要素を選択する。</p>
<p>:lt(index) 指定したインデックスより前の要素を選択する。</p>
<p>:header h1,h2などのヘッダ要素を選択する。</p>
<p>:animated アニメーション中の要素を選択する。</p>
</blockquote>
<p><a href="http://api.jquery.com/category/selectors/basic-filter-selectors/" target="_blank">英語API</a></p>
<p><a href="http://semooh.jp/jquery/api/selectors/" target="_blank">日本語API</a></p>
<p></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.kinopyo.com/blog/jquery-selector-get-the-first-matched-element/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery: append(prepend,appendTo,prependTo)とafter(before,insertAfter,insertBefore)の違い</title>
		<link>http://www.kinopyo.com/blog/jquery-difference-between-append-and-after</link>
		<comments>http://www.kinopyo.com/blog/jquery-difference-between-append-and-after#comments</comments>
		<pubDate>Wed, 01 Dec 2010 10:47:05 +0000</pubDate>
		<dc:creator>kinopyo</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.kinopyo.com/blog/?p=1563</guid>
		<description><![CDATA[
jQueryのappendやafterは全部DOM Manipulation、つまりDOM操作のメソッドであります。どう違うかは下記ソースコードを見るのが一番速いでしょう。
append(prepend,appendTo,prependTo)は要素内に、子供要素として貼り付ける

$(&#039;&#60;span&#62;span text&#60;/span&#62;&#039;).appendTo(&#34;.chapter&#34;);


&#60;div class=&#34;chapter&#34;&#62; ... &#60;/div&#62;

組み立てた結果：

&#60;div class=&#34;chapter&#34;&#62;
	...
	&#60;span&#62;span text&#60;/span&#62;
&#60;/div&#62;

append、appendToは最後の子供要素として、prepend、prependToは最初の子供要素として挿入する感じです。
after(before,insertAfter,insertBefore)は要素の外、つまり同一のレベルで兄弟要素として貼り付ける

$(&#039;&#60;span&#62;span text&#60;/span&#62;&#039;).insertAfter(&#34;.chapter&#34;);

組み立てた結果：

&#60;div class=&#34;chapter&#34;&#62;
	...
	&#60;span&#62;span text&#60;/span&#62;
&#60;/div&#62;

htmlタグがなければ無効

$(&#039;some text&#039;).appendTo(&#34;.chapter&#34;);

htmlに何の変更もないです。

]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>jQueryのappendやafterは全部DOM Manipulation、つまりDOM操作のメソッドであります。どう違うかは下記ソースコードを見るのが一番速いでしょう。</p>
<h4 id="hs_9614194c553a809d059ee0feb6ea2c93_header_0">append(prepend,appendTo,prependTo)は要素内に、子供要素として貼り付ける</h4>
<pre class="brush: javascript;">
$(&#039;&lt;span&gt;span text&lt;/span&gt;&#039;).appendTo(&quot;.chapter&quot;);
</pre>
<pre class="brush: html;">
&lt;div class=&quot;chapter&quot;&gt; ... &lt;/div&gt;
</pre>
<p>組み立てた結果：</p>
<pre class="brush: html;">
&lt;div class=&quot;chapter&quot;&gt;
	...
	&lt;span&gt;span text&lt;/span&gt;
&lt;/div&gt;
</pre>
<p>append、appendToは最後の子供要素として、prepend、prependToは最初の子供要素として挿入する感じです。</p>
<h4 id="hs_9614194c553a809d059ee0feb6ea2c93_header_1">after(before,insertAfter,insertBefore)は要素の外、つまり同一のレベルで兄弟要素として貼り付ける</h4>
<pre class="brush: javascript;">
$(&#039;&lt;span&gt;span text&lt;/span&gt;&#039;).insertAfter(&quot;.chapter&quot;);
</pre>
<p>組み立てた結果：</p>
<pre class="brush: html;">
&lt;div class=&quot;chapter&quot;&gt;
	...
	&lt;span&gt;span text&lt;/span&gt;
&lt;/div&gt;
</pre>
<h4 id="hs_9614194c553a809d059ee0feb6ea2c93_header_2">htmlタグがなければ無効</h4>
<pre class="brush: javascript;">
$(&#039;some text&#039;).appendTo(&quot;.chapter&quot;);
</pre>
<p>htmlに何の変更もないです。</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.kinopyo.com/blog/jquery-difference-between-append-and-after/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQueryセレクタのパフォーマンス：elem vs id</title>
		<link>http://www.kinopyo.com/blog/jquery-selector-performance-elem-vs-i</link>
		<comments>http://www.kinopyo.com/blog/jquery-selector-performance-elem-vs-i#comments</comments>
		<pubDate>Mon, 17 May 2010 04:05:10 +0000</pubDate>
		<dc:creator>kinopyo</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://www.kinopyo.com/blog/?p=1139</guid>
		<description><![CDATA[
elem指定とID指定のjQueryセレクタパフォーマンス実験を行いました。
&#8220;先にJavascriptでelementをとってそれをjQueryの$セレクタに囲むやつ&#8221;
vs
&#8220;直接jQueryのidセレクタでとるやつ&#8221;。

コードで言うと
$(document.getElementById(&#8220;foo&#8221;))
vs
$(&#8220;#foo&#8221;)

普通前者が勝だろうと思うだろう、
どれくらいの差かを確認したくて。
結果
一万回ループでとった結果です。

IE8: 187 vs 344
IE6: 203 vs 453
Firefox×(3.6.3):  21 vs 63
Chrome(4.1.xx):  9 vs 39

サンプルコード
デモページへ

var t0 = new Date();

for (var i=0; i&#60;10000; i++){
	$(document.getElementById(&#34;foo&#34;));
}

var t1 = new Date();

for (var i=0; i&#60;10000; ...]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>elem指定とID指定のjQueryセレクタパフォーマンス実験を行いました。</p>
<p><strong>&#8220;先にJavascriptでelementをとってそれをjQueryの$セレクタに囲むやつ&#8221;</strong></p>
<p>vs</p>
<p><strong>&#8220;直接jQueryのidセレクタでとるやつ&#8221;。</strong></p>
<p><br/></p>
<p>コードで言うと</p>
<p><strong>$(document.getElementById(&#8220;foo&#8221;))</strong></p>
<p>vs</p>
<p><strong>$(&#8220;#foo&#8221;)</strong></p>
<p><br/></p>
<p>普通前者が勝だろうと思うだろう、</p>
<p>どれくらいの差かを確認したくて。</p>
<h4 id="hs_3771e91077a69c0cf87afde115f23e89_header_0">結果</h4>
<p>一万回ループでとった結果です。</p>
<ul>
<li>IE8: 187 vs 344</li>
<li>IE6: 203 vs 453</li>
<li>Firefox×(3.6.3):  21 vs 63</li>
<li>Chrome(4.1.xx):  9 vs 39</li>
</ul>
<h4 id="hs_3771e91077a69c0cf87afde115f23e89_header_1">サンプルコード</h4>
<p><a href="http://www.kinopyo.com/demo/jquery/selector_performance.html" target="_blank" >デモページへ</a></p>
<pre class="brush: javascript;">
var t0 = new Date();

for (var i=0; i&lt;10000; i++){
	$(document.getElementById(&quot;foo&quot;));
}

var t1 = new Date();

for (var i=0; i&lt;10000; i++){
	$(&quot;#foo&quot;);
}

var t2 = new Date();

alert(&quot;直接elementを渡す時間は：&quot; + (t1-t0) + &quot; , ID指定でとる時間は：&quot;+ (t2-t1));
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.kinopyo.com/blog/jquery-selector-performance-elem-vs-i/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery blockUI Pluginのバグ：unblock時にマウスカーソルが砂時計のまま(IE, Chrome)</title>
		<link>http://www.kinopyo.com/blog/jquery-blockui-plugin-bug-hourglass-cursor-stays-in-ie-and-chrome</link>
		<comments>http://www.kinopyo.com/blog/jquery-blockui-plugin-bug-hourglass-cursor-stays-in-ie-and-chrome#comments</comments>
		<pubDate>Mon, 26 Apr 2010 12:38:59 +0000</pubDate>
		<dc:creator>kinopyo</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery Plugin]]></category>

		<guid isPermaLink="false">http://www.kinopyo.com/blog/?p=1084</guid>
		<description><![CDATA[
下記のURLで試してみればすぐ分かりますが、
表題の通りblockUIで制御したところは解除した後にマウスのカーソルがおかしいです。
IE,FirefoxとChromeでテストした結果、Firefoxは無事のようです。
http://malsup.com/jquery/block/position.html
解決策
jquery.blockUI.jsを開いてreset()のfunctionのところに以下のコードを追加

data.el.style.cursor = &#039;default&#039;;

第三者のソースに手を加えるのはあまりやりたくないけど。
参考サイト
Forbidden

]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>下記のURLで試してみればすぐ分かりますが、</p>
<p>表題の通りblockUIで制御したところは解除した後にマウスのカーソルがおかしいです。</p>
<p>IE,FirefoxとChromeでテストした結果、Firefoxは無事のようです。</p>
<p><a href="http://malsup.com/jquery/block/position.html" target="_blank">http://malsup.com/jquery/block/position.html</a></p>
<h4 id="hs_b68ef61b90d1958d8a6d3800f09048a3_header_0">解決策</h4>
<p>jquery.blockUI.jsを開いてreset()のfunctionのところに以下のコードを追加</p>
<pre class="brush: javascript;">
data.el.style.cursor = &#039;default&#039;;
</pre>
<p>第三者のソースに手を加えるのはあまりやりたくないけど。</p>
<h4 id="hs_b68ef61b90d1958d8a6d3800f09048a3_header_1">参考サイト</h4>
<p><a href="http://groups.google.com/group/jquery-en/browse_thread/thread/c86671033a86be25/ebd5e710cc78885a?lnk=gst&amp;q=cursor#" target="_blank">Forbidden</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.kinopyo.com/blog/jquery-blockui-plugin-bug-hourglass-cursor-stays-in-ie-and-chrome/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery siblings()とchildren()の内部ソースを見た</title>
		<link>http://www.kinopyo.com/blog/jquery-source-siblings-children</link>
		<comments>http://www.kinopyo.com/blog/jquery-source-siblings-children#comments</comments>
		<pubDate>Mon, 19 Apr 2010 09:20:02 +0000</pubDate>
		<dc:creator>kinopyo</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Snippet]]></category>

		<guid isPermaLink="false">http://www.kinopyo.com/blog/?p=1080</guid>
		<description><![CDATA[
よく出来ていると思います。
勉強になります。

siblings: function( elem ) {
	return jQuery.sibling( elem.parentNode.firstChild, elem );
},
children: function( elem ) {
	return jQuery.sibling( elem.firstChild );
},

そしてjQuery.sibling()の中身です！
nodeTypeが1の場合はelementノードの意味です。
nはループに使われて、elemは除外する要素です。
例えばsiblings()の場合は自分自身を除外しています。
for文の書き方も覚えとこう、、
javaでのIteratorのhasNext()関数みたいな動きをしていますね。


	sibling: function( n, elem ) {
		var r = [];

		for ( ; n; n = n.nextSibling ...]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>よく出来ていると思います。</p>
<p>勉強になります。</p>
<pre class="brush: javascript;">
siblings: function( elem ) {
	return jQuery.sibling( elem.parentNode.firstChild, elem );
},
children: function( elem ) {
	return jQuery.sibling( elem.firstChild );
},
</pre>
<p>そしてjQuery.sibling()の中身です！</p>
<p>nodeTypeが1の場合はelementノードの意味です。</p>
<p>nはループに使われて、elemは除外する要素です。</p>
<p>例えばsiblings()の場合は自分自身を除外しています。</p>
<p>for文の書き方も覚えとこう、、</p>
<p>javaでのIteratorのhasNext()関数みたいな動きをしていますね。</p>
<pre class="brush: javascript;">

	sibling: function( n, elem ) {
		var r = [];

		for ( ; n; n = n.nextSibling ) {
			if ( n.nodeType === 1 &amp;&amp; n !== elem ) {
				r.push( n );
			}
		}

		return r;
	}
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.kinopyo.com/blog/jquery-source-siblings-children/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery1.3.2 bind時にnamespaceを使うとIE6ではメモリリーク</title>
		<link>http://www.kinopyo.com/blog/jquery1-3-2-memory-leak-when-bind-with-namespace-in-ie6</link>
		<comments>http://www.kinopyo.com/blog/jquery1-3-2-memory-leak-when-bind-with-namespace-in-ie6#comments</comments>
		<pubDate>Sun, 04 Apr 2010 11:50:47 +0000</pubDate>
		<dc:creator>kinopyo</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[IE8]]></category>
		<category><![CDATA[トラブル]]></category>

		<guid isPermaLink="false">http://www.kinopyo.com/blog/?p=1064</guid>
		<description><![CDATA[
表題の通り、IE6 + jQuery1.3.2の状態でbindする時に
jQueryのnamespaceを使うと確実にメモリリークが発生します。
jQuery1.4.2では発生しないことを確認しました。
メモリリークが発生するコード

$(&#34;#foo&#34;).bind(&#34;change.abc&#34;, function(){});

上記&#8221;change.abc&#8221;のabcがnamespaceです。
それをなくすことでメモリリークは解消されます。
イベントハンドラの中身とは関係ありません。
メモリリークは発生しない

$(&#34;#foo&#34;).bind(&#34;change&#34;, function(){});

これはjQueryのbugとして上げられましたが、
完全に修正できなかったみたいです。

      #4241 (Namespaced events cause memory leaks)
     – jQuery Core
     &#8211; Bug Trackerで
当時の担当者のコメントを見ると

I ...]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>表題の通り、IE6 + jQuery1.3.2の状態でbindする時に</p>
<p>jQueryのnamespaceを使うと確実にメモリリークが発生します。</p>
<p>jQuery1.4.2では発生しないことを確認しました。</p>
<h4 id="hs_463e62d31dd221dbca74bf72d07e0d2d_header_0">メモリリークが発生するコード</h4>
<pre class="brush: javascript;">
$(&quot;#foo&quot;).bind(&quot;change.abc&quot;, function(){});
</pre>
<p>上記&#8221;change.abc&#8221;のabcがnamespaceです。</p>
<p>それをなくすことでメモリリークは解消されます。</p>
<p>イベントハンドラの中身とは関係ありません。</p>
<h4 id="hs_463e62d31dd221dbca74bf72d07e0d2d_header_1">メモリリークは発生しない</h4>
<pre class="brush: javascript;">
$(&quot;#foo&quot;).bind(&quot;change&quot;, function(){});
</pre>
<p>これはjQueryのbugとして上げられましたが、</p>
<p>完全に修正できなかったみたいです。</p>
<p><a href="http://dev.jquery.com/ticket/4241" target="_blank"><br />
      #4241 (Namespaced events cause memory leaks)<br />
     – jQuery Core<br />
     &#8211; Bug Tracker</a>で</p>
<p>当時の担当者のコメントを見ると</p>
<blockquote>
<p>I had a really difficult time getting a reliable test case to verify this actually solves the memory leak. r6321 appears to have fixed this issue</p>
</blockquote>
<p>「時間ないからちゃんとテストしてない、r6321の対応で解決できたように見える」と、</p>
<p>ずいぶん適当な回答ですよね。。。</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.kinopyo.com/blog/jquery1-3-2-memory-leak-when-bind-with-namespace-in-ie6/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQueryパフォーマンス：DOM操作について</title>
		<link>http://www.kinopyo.com/blog/jquery-performance-direct-dom-manipulatio</link>
		<comments>http://www.kinopyo.com/blog/jquery-performance-direct-dom-manipulatio#comments</comments>
		<pubDate>Fri, 26 Mar 2010 13:20:54 +0000</pubDate>
		<dc:creator>kinopyo</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.kinopyo.com/blog/?p=1053</guid>
		<description><![CDATA[
DOM操作を避けてjQueryのパフォーマンスを改善する掟です。
こんなコードがあるとしましょう。
パフォーマンスの悪い例

var list = [....];    // 長さ100の配列とする

for (var i in list) {

    var li = document.createElement(&#34;li&#34;);

    $(li)
      ...]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>DOM操作を避けてjQueryのパフォーマンスを改善する掟です。</p>
<p>こんなコードがあるとしましょう。</p>
<h4 id="hs_3a774c7d9759fd5f1a0b861d32261eef_header_0">パフォーマンスの悪い例</h4>
<pre class="brush: javascript;">
var list = [....];    // 長さ100の配列とする

for (var i in list) {

    var li = document.createElement(&quot;li&quot;);

    $(li)
       .attr(&quot;id&quot;, &quot;li&quot; + i)
       .text(list[i]);

$(&quot;ul&quot;).append(li);

}
</pre>
<h4 id="hs_3a774c7d9759fd5f1a0b861d32261eef_header_1">改善したコード</h4>
<pre class="brush: javascript;">
var list = [....];    // 長さ100の配列とする

var li = &quot;&quot;;
for (var i in list) {

    li += &quot;&lt;li id=&#039;li&quot; + i &quot;&#039;&gt;&quot; + list[i] + &quot;&lt;/li&gt;&quot;;

}

$(&quot;ul&quot;).html(li);
</pre>
<h4 id="hs_3a774c7d9759fd5f1a0b861d32261eef_header_2">まとめ</h4>
<ul>
<li>document.createElementの代わりにHTMLの文字列を作る</li>
<li>jQueryオブジェクトに属性やテキストを設定するのではなく、直接HTML文字列に書く</li>
<li>for文内毎回appendの代わりにhtml()を使う</li>
</ul>
<p>実際のプロジェクトでやってみたら10倍以上は速くなりました。</p>
<p>とは言ってもこれはIE6でのパフォーマンスで、</p>
<p>FirefoxやIE8だと悪い例のコードても遅いとは実感できないくらいでした。</p>
<p>ちなみに</p>
<p>$(li).attr(&#8230;).val(&#8230;).text(&#8230;)の方は読みやすいので結構気に入ったんですけど。。。</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.kinopyo.com/blog/jquery-performance-direct-dom-manipulatio/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery1.3.2のバグ?IEで&nbsp;を$.trimするとき変な結果に</title>
		<link>http://www.kinopyo.com/blog/jquery1-3-2_bug_trim_nbsp</link>
		<comments>http://www.kinopyo.com/blog/jquery1-3-2_bug_trim_nbsp#comments</comments>
		<pubDate>Wed, 10 Mar 2010 04:13:55 +0000</pubDate>
		<dc:creator>kinopyo</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.kinopyo.com/blog/?p=1034</guid>
		<description><![CDATA[
jQuery 1.4.2ではこれは治ったようです。
jQuery最新版をお使いの方は下記のようなバグはもう発生しません。
サンプル
※jQuery 1.3.2で発生する問題※
HTML

&#60;select&#62;
	&#60;option id=&#34;foo&#34;&#62;&#38;nbsp;&#60;/option&#62;
	&#60;option&#62;11&#60;/option&#62;
	&#60;option&#62;22&#60;/option&#62;
&#60;/select&#62;

&#60;tr id=&#34;bar&#34;&#62;&#38;nbsp;&#60;/tr&#62;

Javascript

var optionText = $(&#34;#foo&#34;).text();

// firefoxは0、IEは1
alert(&#34;select optionタグの をtrimした後のlength: &#34; + $.trim(optionText).length);

var trText = $(&#34;#bar&#34;).text();

// firefoxは0、IEも0！
alert(&#34;trタグの をtrimした後のlength: &#34; + $.trim(trText).length);

結果
selectのoptionタグのテキストにある&#8220;&#38;nbsp;&#8221;に
$.trimをかけて見ると
Firefoxはちゃんとtrimしてlengthが0になったが、
IEはtrimできずlengthが1のままです。
しかしtrタグのテキストにある&#8221;&#38;nbsp;&#8221;をtrimすると
IEも正しくtrimしてlengthが0になるんです。。。
DEMO
jQuery最新版(1.4.2)を使うDEMO

]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>jQuery 1.4.2ではこれは治ったようです。</p>
<p>jQuery最新版をお使いの方は下記のようなバグはもう発生しません。</p>
<h4 id="hs_b72f8c3156167e0f5585b43732d48ba9_header_0">サンプル</h4>
<p>※jQuery 1.3.2で発生する問題※</p>
<h5 id="hs_b72f8c3156167e0f5585b43732d48ba9_header_1">HTML</h5>
<pre class="brush: html;">
&lt;select&gt;
	&lt;option id=&quot;foo&quot;&gt;&amp;nbsp;&lt;/option&gt;
	&lt;option&gt;11&lt;/option&gt;
	&lt;option&gt;22&lt;/option&gt;
&lt;/select&gt;

&lt;tr id=&quot;bar&quot;&gt;&amp;nbsp;&lt;/tr&gt;
</pre>
<h5 id="hs_b72f8c3156167e0f5585b43732d48ba9_header_2">Javascript</h5>
<pre class="brush: javascript;">
var optionText = $(&quot;#foo&quot;).text();

// firefoxは0、IEは1
alert(&quot;select optionタグの をtrimした後のlength: &quot; + $.trim(optionText).length);

var trText = $(&quot;#bar&quot;).text();

// firefoxは0、IEも0！
alert(&quot;trタグの をtrimした後のlength: &quot; + $.trim(trText).length);
</pre>
<h4 id="hs_b72f8c3156167e0f5585b43732d48ba9_header_3">結果</h4>
<p>selectのoptionタグのテキストにある<span>&#8220;&amp;nbsp;&#8221;</span>に</p>
<p>$.trimをかけて見ると</p>
<p>Firefoxはちゃんとtrimしてlengthが0になったが、</p>
<p>IEはtrimできずlengthが1のままです。</p>
<p>しかしtrタグのテキストにある&#8221;&amp;nbsp;&#8221;をtrimすると</p>
<p>IEも正しくtrimしてlengthが0になるんです。。。</p>
<h4 id="hs_b72f8c3156167e0f5585b43732d48ba9_header_4">DEMO</h4>
<p><a href="http://www.kinopyo.com/demo/jquery/jQuery1.3.2_trim_nbsp.html" target="_blank">jQuery最新版(1.4.2)を使うDEMO</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.kinopyo.com/blog/jquery1-3-2_bug_trim_nbsp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 3/62 queries in 0.594 seconds using disk: basic
Object Caching 744/838 objects using disk: basic

Served from: www.kinopyo.com @ 2012-01-14 19:00:17 -->
