반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리

selection 리스트 열고 닫기

2012. 11. 13. 20:16 | Posted by 솔웅


반응형
Open and close a selection list



selection list 를 open 하려면 <select> element에 selectmenu ("open") method 를 사용하시면 됩니다. 닫으려면 selectmenu ("close") method 를 사용하시구요.

이 두 메소드는 <select> element 가 data-native-menu="false" attribute 가 있는 경우에만 동작합니다. 그러니까 native selection list에 대해서는 이 메소드들을 갖고 open 하거나 close 할 수 없는거죠.

아래에는 list 가 이미 HTML 안에 있는 경우와 다이나믹하게 jQuery 에 의해 생성된 경우 이 두 메소드를 사용하는 방법을 다룰 겁니다.


Selection list already present in the HTML


Open a selection list since its creation


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <span> Choose an apartment type: </span>

    <select data-native-menu=false>

      <option value=1> 1 bedroom </option>

      <option value=2> 2 bedrooms </option>

      <option value=3> 3 bedrooms </option>

      <option value=4> 4 bedrooms </option>

      <option value=5> 5 bedrooms </option>

    </select>

  </div>

</div>


</body>

</html>


<script>


$("select").bind ("selectmenucreate", function ()

{

  $("select").selectmenu ("open");

});


</script>



selection list 의 HTML code 는 jQuery Mobile 에 의해 수정됐습니다. 우리는 selectmenu ("open") method를 call 하기 전에 이 리스트가 완전히 생성될 때까지 기다려야 합니다. 만약 이 selection list 가 제 위치에 제대로 display 되지 않는다면 이것을 css () method를 사용해서 바꿔주어야 합니다.


Position the selection list to 25 pixels from the left


$("select").bind ("selectmenucreate", function ()

{

  $("select").selectmenu ("open");

  $(".ui-selectmenu").css ( { top : "130px", left : "25px" } );

});





tistory466_01.html


Selection list dynamically created


이제 selection list의 HTML code 를 JavaScript 를 통해 insert 하겠습니다.


Create and open a selection list


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <span> Choose an apartment type: </span>

  </div>

</div>


</body>

</html>


<script>


var html = "";

html += "<select data-native-menu=false>";

html +=   "<option value=1> 1 bedroom </option>";

html +=   "<option value=2> 2 bedrooms </option>";

html +=   "<option value=3> 3 bedrooms </option>";

html +=   "<option value=4> 4 bedrooms </option>";

html +=   "<option value=5> 5 bedrooms </option>";

html += "</select>";


$("#home div:jqmData(role=content)").append (html);


$("select").bind ("selectmenucreate", function ()

{

  $("select").selectmenu ("open");

  $(".ui-selectmenu").css ( { top : "130px", left : "25px" } );

});


</script>

tistory466_02.html


약간 변형시키는 것도 가능합니다. pagecreate event (instead of before this event as above) 에서 이 HTML 코드를 insert 한다면 리스트가 insert 됐을 때 window는 이미 생성돼 있을 겁니다. 그 다음에 오리지널 HTML code 가 jQuery Mobile convention에 맞게 display 될 겁니다. 이 작업은 <select> element 에서 selectmenu () method 가 call  되면서 이루어 집니다.


Create the selection list after creating the window


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <span> Choose an apartment type: </span>

  </div>

</div>


</body>

</html>


<script>


$("#home").bind ("pagecreate", function ()

{

  var html = "";

  html += "<select data-native-menu=false>";

  html +=   "<option value=1> 1 bedroom </option>";

  html +=   "<option value=2> 2 bedrooms </option>";

  html +=   "<option value=3> 3 bedrooms </option>";

  html +=   "<option value=4> 4 bedrooms </option>";

  html +=   "<option value=5> 5 bedrooms </option>";

  html += "</select>";

  

  $("#home div:jqmData(role=content)").append (html);

  

  $("select").selectmenu ();

  $("select").selectmenu ("open");

  $(".ui-selectmenu").css ( { top : "130px", left : "25px" } );

});


</script>


tistory466_03.html


반응형