질문if($selectMenuItem) 관련 질문을 다시 올립니다.
<style>.tab-menu {list-style: none;height:80px;}.tab-menu li {width:99px;height:40px;background-position-y:0;text-indent: -1000px;overflow: hidden;display: inline-block;float:left;}.tab-menu li:hover {background-position-y: -40px;}.tab-menu li.select {background-position-y: -80px;height:80px;}.tab-menu li.menuitem1 {background-image: url(./images/newbtn.bar.1.png);}.tab-menu li.menuitem2 {background-image: url(./images/newbtn.bar.2.png);}.tab-menu li.menuitem3 {background-image: url(./images/newbtn.bar.3.png);}.tab-menu li.menuitem4 {background-image: url(./images/newbtn.bar.4.png);}.tab-menu li.menuitem5 {background-image: url(./images/newbtn.bar.6.png);}</style><script>$(document).ready(function(){tabMenu('#tabMenu1');});function tabMenu(selector){var $tabMenu = null;var $menuItems = null;var $selectMenuItem = null; // a주석function init(){$tabMenu = $(selector);$menuItems = $tabMenu.find('li');}function initEvent(){$menuItems.click(function(){setSelectItem($(this));});}function setSelectItem($item){if($selectMenuItem){ // b 주석$selectMenuItem.removeClass('select');}$selectMenuItem = $item;$selectMenuItem.addClass('select');}init();initEvent();}</script></head><body><ul class="tab-menu" id="tabMenu1"><li class="menuitem1">google</li><li class="menuitem2">facebook</li><li class="menuitem3">pinterest</li><li class="menuitem4">twitter</li><li class="menuitem5">path</li></ul></body></html>위와 같은 소스가 있습니다. 설명드리자면,,아. style 은 위 원문에 적지 않고, 스크립트만 넣은 거라서,,설명드리자면요,,각 텝에 mouseenter하면 탭의 배경이미지가 위로, click하면 더 위로.,,올라가면서 각각 변하는 것입니다.근데, 이건 밑에 스크립트와는 관련이 없는 부분입니다. 사실, 이런 탭메뉴와 관련된 것이 계속 이해가 안돼고, 내내 괴롭히고 있습니다. -.=;;즉, function setSelectItem($item){if($selectMenuItem){$selectMenuItem.removeClass('select');}$selectMenuItem = $item;$selectMenuItem.addClass('select');}위 부분입니다. 위 소스가 작동하는 것은 css를 공부할 때 이해를 했던 것이라서로직은 잘 이해를 합니다. 근데, $selectMenuItem <<== 이 정체가 계속 이해가 안됩니다..위에 a, b라고 주석을 달아놓은 부분입니다. 제가 if의 조건문에 대해서 저번에 질문을 드렸는데요, 그때,,가령 var x = null;; 이럴 경우,,if(x){ a } <<= 이 경우에는 null은 0,,즉 false를 의미하기 때문에 a가 실행이 되지가 않는다. 라는 답변을 올려주셨습니다. 예를 들자면,var x = 10;if(x%2){ a } else { b } 이렇다면 b가 실행이 됩니다.. 즉, 10을 2로 나눈 나머지는0 이니까요...해서, 제가 이런 식으로 이해는 하는데요..위 원소스는,,,사실 책에는 이렇게 써있습니다.맨위에 a주석을 단 곳에var $selectMenuItem = null;; 이렇게 한 것은 $selectMenuItem즉, var $selectMenuItem = null; <<<== 여기서 null 이 들어갔다는 것은 $selectMenuItem라는 전역변수에 앞으로 그 어떤 클래스 인스턴트라든지,,객체가 들어갈 것이라는 것을 암시하고 있다는데요....(책에 나온 설명이 이럽니다.)그래서, 원소스의 맨위에도var $tabMenu = null;var $menuItems = null;var $selectMenuItem = null;이렇게 나온 것입니다. 그래서, 이 경우에는 null 이라는 것이 이 원소스구문에서는 true/false를 판별하는용도로 사용이 되지 않는 것 같습니다...function setSelectItem($item){ //여기서 $ item은 바로 위 initEvent() 함수에서내려온 $(this)로서 ,,5개의 li중에서 클릭된 li 를 담고 있는데요..if($selectMenuItem){ //c주석$selectMenuItem.removeClass('select');}$selectMenuItem = $item;$selectMenuItem.addClass('select');}이렇게 위부분에서그렇다면 위의 c주석을 해석하자면,if($selectMenuItem)...이것은 무슨 의미인지,,,바로 이게 계속 이해가 안됩니다. -.=;;즉, 맨위에 전역변수로서 var $selectMenuItem = null; 이렇게 한번 선언된 후,,지금 처음 나옵니다...;;;var $tabMenu = null;var $menuItems = null;이런 것 들은 스크립트를 쭉 내려가면서 객체를 담게 되는 것이 나오고요..-.=;;가령, function init(){$tabMenu = $(selector);$menuItems = $tabMenu.find('li');}위와 같은 소스에서요...그러나, $selectMenuItem은 아무런 객체를 담지를 않고, function setSelectItem($item){if($selectMenuItem){$selectMenuItem.removeClass('select'); // d주석}$selectMenuItem = $item;$selectMenuItem.addClass('select');}이렇게 나옵니다...근데, d주석부분을 보면select라는 클래스를 제거한다는 것을 것을 보니$selectMenuItem이라는 것이 select 클래스가 있는 li를 가리킵니다....그리고, 바로 밑에 $selectMenuItem에 클릭한 $this(즉, 클릭한 li) 를 담습니다.그리고, 바로 밑에 그 li 에 addClass를 하게 됩니다..이렇게는 이해를 하는데..if($selectMenuItem)... 이걸 도무지 이해가 안되더군요...-.=;;;;어떻게 해석이 되는지를요..그래서, function setSelectItem($item){$selectMenuItem = $item; //바꾼 위치.if($selectMenuItem){$selectMenuItem.removeClass('select');}$selectMenuItem.addClass('select');}이렇게 위치를 바꿔봤습니다.즉,$selectMenuItem은 무엇인가? 이건 위 스크립트에서 내려온 $this이다..라고 이해가 되어서요..근데, 그렇게 해도,if($(this)).. 이렇게 되어버리는 것인데,,,그러면, 이것도 또 이해가 안됩니다... 여기서 $(this)는 클릭한 li를 말한다는 것은 아는데요..if구문에 넣어서,,if($(this))로 하면,,,이게 뭘 어쨌따는 건지....즉,if($selectMenuItem) 처럼 어쨌따는 건지,,,현재로선 죽어도 이해가 안돼네요...-.=;;다른 스크립트는 이해가 되는데,,꼭, 이렇게 탭관련해서 if($selectMenuItem) 이런 식으로 나올때마다이해가 안됩니다...;;;언제나, 자세한 답변을 주시려고 노력하시는 김호님께 인간적으로 감사를 드립니다...