<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to UIToggleCheckbox</title><link>https://sourceforge.net/p/xe-core/wiki/UIToggleCheckbox/</link><description>Recent changes to UIToggleCheckbox</description><atom:link href="https://sourceforge.net/p/xe-core/wiki/UIToggleCheckbox/feed" rel="self"/><language>en</language><lastBuildDate>Wed, 25 Mar 2015 11:09:24 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/xe-core/wiki/UIToggleCheckbox/feed" rel="self" type="application/rss+xml"/><item><title>UIToggleCheckbox modified by Anonymous</title><link>https://sourceforge.net/p/xe-core/wiki/UIToggleCheckbox/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="toggle-checkbox"&gt;Toggle Checkbox&lt;/h1&gt;
&lt;p&gt;특정 테이블에서 테이블 헤더(thead) 또는 테이블 푸터(tfoot)에 포함된 체크박스를 클릭했을 때 이와 관련있는 체크박스를 모두 선택하거나 체크를 해제한다. &lt;/p&gt;
&lt;h2 id="basics"&gt;Basics&lt;/h2&gt;
&lt;p&gt;토글 체크박스 기능을 사용하기 위해서는 몇 가지 규칙이 필요하다. &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;전체를 토글하는 체크박스(이하 토글 체크박스)는 반드시 테이블 헤더(thead) 또는 테이블 푸터(tfoot)의 자손 노드여야 한다. &lt;/li&gt;
&lt;li&gt;토글 체크박스는 &lt;code&gt;name&lt;/code&gt; 속성을 가질 수 없다. 대신 사용자 정의 데이터 속성인 &lt;code&gt;data-name&lt;/code&gt;에 토글할 대상 체크박스의 &lt;code&gt;name&lt;/code&gt;을 설정해줍니다. &lt;/li&gt;
&lt;li&gt;토글 체크박스를 클릭하면 같은 테이블에 속해있고 &lt;code&gt;data-name&lt;/code&gt;의 값과 같은 &lt;code&gt;name&lt;/code&gt;을 가진 체크박스를 모두 토글 체크박스의 상태와 똑같이 만듭니다. &lt;/li&gt;
&lt;li&gt;체크 박스는 체크된 상태(checked)/체크되지 않은 상태(unchecked)만 지원할 뿐 중간 상태(indeterminate state)는 지원하지 않는다. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;다음은 위 규칙에 의해 작성한 HTML 코드이다. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nt"&gt;&amp;lt;table&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"listTable"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;thead&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;th&amp;gt;&lt;/span&gt;Title&lt;span class="nt"&gt;&amp;lt;/th&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;th&amp;gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"checkbox"&lt;/span&gt; &lt;span class="na"&gt;data-name=&lt;/span&gt;&lt;span class="s"&gt;"cbox&lt;/span&gt;&lt;span class="cp"&gt;[]&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt; &lt;span class="na"&gt;title=&lt;/span&gt;&lt;span class="s"&gt;"모두 체크/해제"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&amp;lt;/th&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/thead&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;tfoot&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;th&amp;gt;&lt;/span&gt;Title&lt;span class="nt"&gt;&amp;lt;/th&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;th&amp;gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"checkbox"&lt;/span&gt; &lt;span class="na"&gt;data-name=&lt;/span&gt;&lt;span class="s"&gt;"cbox&lt;/span&gt;&lt;span class="cp"&gt;[]&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt; &lt;span class="na"&gt;title=&lt;/span&gt;&lt;span class="s"&gt;"모두 체크/해제"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&amp;lt;/th&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/tfoot&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;tbody&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;Good morning!&lt;span class="nt"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;td&amp;gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"checkbox"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"cbox&lt;/span&gt;&lt;span class="cp"&gt;[]&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;즐거운 아침입니다!&lt;span class="nt"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;td&amp;gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"checkbox"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"cbox&lt;/span&gt;&lt;span class="cp"&gt;[]&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;おはようございます!&lt;span class="nt"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;td&amp;gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"checkbox"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"cbox&lt;/span&gt;&lt;span class="cp"&gt;[]&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/tbody&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/table&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;약간의 CSS를 더하면 이 테이블은 화면에서 다음과 같이 보인다. CSS는 중요한 내용이 아니므로 여기서 다루지 않는다. &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://xe-core.googlecode.com/svn/wiki/img/AdminuiCheckboxExample.png" rel="nofollow" /&gt;&lt;/p&gt;
&lt;p&gt;이제 테이블 헤더 또는 푸터에 있는 체크 박스를 클릭하면 다음과 같은 과정을 거친다. &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;클릭한 체크 박스에 &lt;code&gt;data-name&lt;/code&gt; 속성이 있는지 찾고, 있으면 이 값을 기억해둔다. &lt;/li&gt;
&lt;li&gt;테이블에서 &lt;code&gt;data-name&lt;/code&gt; 속성의 값과 일치하는 &lt;code&gt;name&lt;/code&gt;을 가진 체크박스를 모두 구한다. &lt;/li&gt;
&lt;li&gt;1에서 클릭한 체크박스가 체크되어 있으면 2에서 구한 체크박스를 모두 체크하고, 그렇지 않으면 2에서 구한 체크 박스를 모두 체크 해제한다. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;위 그림에서는 가장 상단에 있는 체크박스나 가장 하단에 있는 체크박스를 클릭하면 테이블의 모든 체크박스가 선택되고, 다시 한번 가장 상단이나 가장 하단에 있는 체크 박스를 클릭하면 모든 체크박스의 체크 표시가 해제된다. &lt;/p&gt;
&lt;h2 id="events"&gt;Events&lt;/h2&gt;
&lt;p&gt;체크박스를 모두 업데이트하고 나면 체크박스가 속한 &lt;code&gt;table&lt;/code&gt; 요소에 &lt;code&gt;update.checkbox&lt;/code&gt;라는 사용자정의 이벤트를 발생시킵니다. 따라서, 체크박스를 모두 업데이트하고 난 후에 실행하고 싶은 코드가 있다면 해당 테이블에 &lt;code&gt;update.checkbox&lt;/code&gt; 이벤트 핸들러를 바인딩하면 된다. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;jQuery&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'#listTable'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'update.checkbox'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;checked&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// 테이블의 체크박스를 모두 업데이트 한 후 실행할 코드&lt;/span&gt;
        &lt;span class="c1"&gt;// name은 업데이트한 체크박스의 name&lt;/span&gt;
        &lt;span class="c1"&gt;// checked는 업데이트한 체크박스의 체크 여부&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Wed, 25 Mar 2015 11:09:24 -0000</pubDate><guid>https://sourceforge.netc91d6d66cde23992a62228bb7a7cb38d14728b28</guid></item></channel></rss>