동적 νŽ˜μ΄μ§€ 생성에 κ΄€ν•΄ 문의 λ“œλ¦½λ‹ˆλ‹€.

1,606 views
Skip to first unread message

영민 μ§„

unread,
May 2, 2011, 4:02:46β€―AM5/2/11
to μ•±μŠ€ν”„λ ˆμ†Œ
a νŽ˜μ΄μ§€μ—μ„œ bνŽ˜μ΄μ§€λ‘œ μ΄λ™ν•˜λŠ”λ° b νŽ˜μ΄μ§€λ₯Ό λ™μ μœΌλ‘œ κ΅¬ν˜„ν•˜λ €κ³  ν•©λ‹ˆλ‹€.

pagebeforeshow 이벀트λ₯Ό μΊμ·¨ν•œ λ‹€μŒμ— 이 뢀뢄에 b νŽ˜μ΄μ§€λ₯Ό λ™μ κ΅¬μ„±ν•˜λŠ” μ‹μœΌλ‘œ ν•˜λ € ν•©λ‹ˆλ‹€.

<body>
<div data-role="page" id="main">

μ΄λ ‡κ²Œ b νŽ˜μ΄μ§€μ˜ body 뢀뢄을 해놓고 aνŽ˜μ΄μ§€μ˜ pagebeforeshowμ—μ„œ

document.getElementById('main').innerHTML =
"<div data-role=\"header\" data-position=\"fixed\">" +
"<h1>Test</h1>" +
"</div>" +
"<div data-role=\"content\">" +
"<a href=\"/a.html\" data-role=\"button\">About jQueryMobile</
a>" +
"</div>"

μ΄λ ‡κ²Œ ν–ˆλŠ”λ° jqueryκ°€ μ μš©λ˜μ§€ μ•Šκ³  κ·Έλƒ₯ htmlνƒœκ·Έλ‘œ μΈμ‹λ©λ‹ˆλ‹€.
μ™œ jqueryλ₯Ό μΈμ‹ν•˜μ§€ λͺ»ν•˜λŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€.
a/b νŽ˜μ΄μ§€ λͺ¨λ‘ jquery μ„ μ–Έ μž˜λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

λ‹΅λ³€ λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.

κ°μ‚¬ν•©λ‹ˆλ‹€.

쑴슨

unread,
May 2, 2011, 6:00:51β€―AM5/2/11
to μ•±μŠ€ν”„λ ˆμ†Œ
μ•ˆλ…•ν•˜μ„Έμš”?
μ›ν•˜μ‹œλŠ” 동적 λ§ˆν¬μ—… μƒμ„±μ‹œ jQueryMobile μ—μ„œ μžλ™μ΄ˆκΈ°ν™”(Automatic initialization)κ°€ λ˜μ§€ μ•ŠλŠ”κ±Έ
둜 λ³΄μž…λ‹ˆλ‹€.

b νŽ˜μ΄μ§€μ—μ„œ κ°€λŠ₯ν•œ λͺ¨λ“  λ§ˆν¬μ—…μ„ staticν•˜κ²Œ μ •μ˜ν•˜λŠ”κ²ƒμ„ ꢌμž₯ ν•©λ‹ˆλ‹€.
단 content role μ˜μ—­μ€ pagebeforeshow 이벀트둜 동적 적용 κ°€λŠ₯ν•©λ‹ˆλ‹€.
(header role μ˜μ—­ λ³€κ²½μ‹œμ—λŠ” μžλ™μ΄ˆκΈ°ν™” λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.)

content μ˜μ—­ 변경은 μ•„λž˜ μƒ˜ν”Œμ„ μ°Έμ‘° ν•˜μ„Έμš”.

1. b.html
<div id="test" data-role="page">
<div data-role="header">
<h1>ν—€λ”μ˜μ—­μ€ λ³€κ²½ν•˜μ§€λ§ˆμ„Έμš”</h1>
</div>
<div id="test-content" data-role="content">
content μ˜μ—­μ€ λ™μ μœΌλ‘œ λ³€κ²½ κ°€λŠ₯ν•©λ‹ˆλ‹€.
</div>
</div>

2. μ•„λž˜λŠ” pagebeforeshow 이벀트 μ½”λ“œμž…λ‹ˆλ‹€.
$("#test").live("pagebeforeshow", function (event, ui) {
var markup = '동적 μ½˜ν…μΈ  λ‚΄μš©μž…λ‹ˆλ‹€';
$('#test-content').html(markup);
});

μ›ν•˜μ‹œλŠ” 닡변이 λ§žλŠ”μ§€ λͺ¨λ₯΄κ² λ„€μš”.
κΌ­ μ„±κ³΅ν•˜μ„Έμš”! ^^

Jin Youngmin

unread,
May 3, 2011, 12:48:18β€―AM5/3/11
to appspr...@googlegroups.com
λ‹΅λ³€ κ°μ‚¬ν•©λ‹ˆλ‹€.

λ‹€λ₯Έ ꢁ금증 ν•˜λ‚˜ 더 μžˆμ–΄μ„œμš”^^

bνŽ˜μ΄μ§€μ—μ„œλŠ” μ™œ eventκ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€.

.liveλ₯Ό μ΄μš©ν•˜λ©΄ λ°œμƒν•˜λŠ” 걸둜 μ•Œκ³  μžˆλŠ”λ° bνŽ˜μ΄μ§€μ—μ„œλŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

aνŽ˜μ΄μ§€μ—μ„œ bνŽ˜μ΄μ§€μ— λŒ€ν•œ event pagebeforesho / pageshow λ‘˜λ‹€ 잘 μž‘λ™ν•˜λŠ”λ°

bμ—μ„œ b에 λŒ€ν•œ event pagebeforeshow / pageshowκ°€ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

eventκ°€ μž‘λ™ν•˜μ§€ μ•Šμ•„μ„œ bνŽ˜μ΄μ§€μ—μ„œ λ™μ μœΌλ‘œ ꡬ성할 μˆ˜κ°€ μ—†μŠ΅λ‹ˆλ‹€.

μ›λž˜λŠ” htmlνƒœκ·Έμˆœμ— λ”°λΌμ„œ 독립적인 νŽ˜μ΄μ§€ κ΅¬μ„±μœΌλ‘œ ν–ˆλ‹€κ°€ μ•ˆλ˜μ„œ

<div ν˜•νƒœμ˜ νŽ˜μ΄μ§€λ‘œ ꡬ성도 ν•΄λ³΄μ•˜λŠ”λ° 두 방식 λͺ¨λ‘ 되질 μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

아직 jquery / jquerymobile / htmlλ“± μ›Ή μͺ½ μ‹œμž‘ν•œμ§€ μ–Όλ§ˆ λ˜μ§€ μ•Šμ•„μ„œ λͺ¨λ₯΄λŠ”κ²ƒλ„ 많고 κΆκΈˆν•œκ²ƒλ„ λ§ŽμŠ΅λ‹ˆλ‹€.^^;;

λ‹€μ‹œ ν•œλ²ˆ λ‹΅λ³€ κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

2011. 5. 2., μ˜€ν›„ 7:00, 쑴슨 μž‘μ„±:

iolo

unread,
May 3, 2011, 9:59:45β€―AM5/3/11
to μ•±μŠ€ν”„λ ˆμ†Œ
ν•œ μ€„λ‘œ κ°„λ‹¨νžˆ λ§μ”€λ“œλ¦¬λ©΄:

markup = '<div data-role="header">new title</div><div data-
role="content">....</div>...';

$('#main').page('destroy').html(markup).page();

쒀더 λΆ€μ—°μ„€λͺ…을 λ“œλ¦¬λ©΄,
jquerymobileμ΄λ‚˜ jquery UI λ“±μ˜ λŒ€λΆ€λΆ„μ˜ UI ν”„λ ˆμž„μ›μ€ html컨텐츠(innerHTML)λ₯Ό 바꿔도 μžλ™μœΌλ‘œ
UI에 λ°˜μ˜λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
λ‹¨μˆœν•œ html νƒœκ·Έλ“€μ„ λ³€ν˜•ν•΄μ„œ 예쁜 UI둜 λ³€μ‹ μ‹œν‚€λŠ” 과정이 ν•„μš”ν•œκ±°μ£ .
졜초 νŽ˜μ΄μ§€ λ‘œλ”© μ‹œμ—λŠ” 이 μž‘μ—…μ„ μžλ™μœΌλ‘œ ν•©λ‹ˆλ‹€λ§Œ,
λ™μ μœΌλ‘œ λ‚΄μš©μ„ λ°”κΎΌ λ’€μ—λŠ” μœ„μ—μ„œμ™€ 같은 좔가적인 μž‘μ—…μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

(jquery UI에 μ΅μˆ™ν•˜μ‹œλ‹€λ©΄ 이미 해보셨을텐데...)정상적인 방법은
$('#main').html(markup).page('refresh'); μž…λ‹ˆλ‹€.
λ‹€λ₯Έ λŒ€λΆ€λΆ„μ˜ μœ„μ ―(폼컨트둀, listviewλ“±)은 μ΄λ ‡κ²Œν•˜λ©΄ λ©λ‹ˆλ‹€λ§Œ,
page의 κ²½μš°μ—” ν˜„μž¬ jquerymobile은 νŽ˜μ΄μ§€ 화면을 λ‚΄λΆ€μ μœΌλ‘œ μΊμ‹±ν•˜κ³  μžˆμ–΄μ„œ μ•ˆλ©λ‹ˆλ‹€.(버그...)

정상적인 경우의 λͺ‡κ°€μ§€ 예λ₯Ό 듀어보면:

리슀트뷰:

<ul id="list1">...</ul>

$('#list1').html('<li>first</li><li>second</
li>...').listview('refresh');

μ²΄ν¬λ°•μŠ€:

<input id="check1' type="check" checked />

$('#check1').attr('checked', false).checkbox('refresh');

단일선택/μ½€λ³΄λ°•μŠ€(selectmenu):

<select id="select1">
<option value="1" selected>first</option>
<option value="2">second</option>
<option value="3">third</option>
</select>

$('#select1').html('<option value="1">first</option><option
value="2">second</option>...').selectmenu('refresh');

$('#select1').attr('selectedIndex', 2).selectmenu('refresh');

λ“±κ³Ό κ°™μŠ΅λ‹ˆλ‹€.

이 뢀뢄은 jquery UI의 μœ„μ ― ꡬ쑰와 κ΄€λ ¨λœ κ²ƒμœΌλ‘œ, jquery의 μ‚¬μš©μ΄ ν•„μˆ˜μ μž…λ‹ˆλ‹€.
document.getElementById() λ§ŒμœΌλ‘œλŠ” 해결이 μ•ˆλ©λ‹ˆλ‹€)

더 μžμ„Έν•œ λ‚΄μš©μ€ jquerymobile, jquery UI μ‚¬μ΄νŠΈμ™€ κ΄€λ ¨ λ¬Έμ„œ 등을 μ°Έμ‘°ν•˜μ…”μ•Ό ν•  λ“―...
도움이 λ˜μ…¨κΈΈ...

On May 2, 5:02 pm, 영민 μ§„ <something...@gmail.com> wrote:

iolo

unread,
May 3, 2011, 10:21:46β€―AM5/3/11
to μ•±μŠ€ν”„λ ˆμ†Œ
a,bνŽ˜μ΄μ§€(div data-role="page")이 같은 htmlνŒŒμΌμ— μžˆλŠλƒ λ‹€λ₯Έ htmlνŒŒμΌμ— μžˆλŠλƒμ— 따라 λ‹€λ₯Έλ°...

첫번째 νŽ˜μ΄μ§€(a.html)μ—μ„œ λ‘λ²ˆμ§Έ νŽ˜μ΄μ§€(b.html)둜 μ΄λ™ν•˜λ”λΌλ„ λ‘λ²ˆμ§Έ νŽ˜μ΄μ§€μ˜ head에 μ •μ˜λœ
javascript/cssλŠ” λ‘œλ”©λ˜μ§€λ„ μ•Šκ³  μ‹€ν–‰λ˜μ§€λ„ μ•ŠμŠ΅λ‹ˆλ‹€.
κ·ΈλŸ¬λ‚˜, λ‘λ²ˆμ§Έ νŽ˜μ΄μ§€(b)의 μ£Όμ†Œλ₯Ό μ£Όμ†Œμ°½μ— μž…λ ₯ν•΄μ„œ μ—΄λ©΄ javascript/cssκ°€ λ‘œλ”©λ„ 되고 싀행도 λ©λ‹ˆλ‹€. 각각의 κ²½
μš°μ— 브라우져의 μ£Όμ†Œμ°½μ„ μœ μ‹¬νžˆ λ³΄μ‹œλ©΄ 쑰금만 차이λ₯Ό 보싀 수 μžˆμŠ΅λ‹ˆλ‹€('#')

μ΄λŠ” jquerymobile의 λ‚΄λΆ€ ꡬ쑰와 κΉŠμ€ κ΄€λ ¨λœ κ²ƒμœΌλ‘œ,
μžμ„Έν•œ λ‚΄μš©μ€ http://jquerymobile.com/demos/1.0a4.1/docs/pages/index.html λ₯Ό μ°Έ
μ‘°ν•˜μ…”μ•Ό ν•©λ‹ˆλ‹€λ§Œ... λ³΄μ‹œλ©΄ μ•„μ‹œκ² μ§€λ§Œ... κ½€ λ³΅μž‘ν•˜μ£  -_-;
ν•˜μ§€λ§Œ jquerymobileλ₯Ό 본격적으둜 μ“°μ‹œλ €λ©΄ κΌ­ μ΄ν•΄ν•˜μ…”μ•Ό ν•˜λŠ” λΆ€λΆ„μž…λ‹ˆλ‹€.
ꡬ글링을 ν•˜μ‹œλ©΄ λΉ„μŠ·ν•œ 질문이 λ§Žμ„ν…λ°...

κ°„λ‹¨ν•œ 해결책을 λ§μ”€λ“œλ¦¬λ©΄:

방법1: νŽ˜μ΄μ§€a(<div id="b" data-role="page">)와 νŽ˜μ΄μ§€b(<div id="b" data-
role="page">)의 λ‚΄μš©μ„ 같은 html(a.html) 파일 μ•ˆμ— 두고, 두 νŽ˜μ΄μ§€κ°„μ˜ 이동에 λ‚΄λΆ€ 링크(<a
href="#a">a</a>, <a href="#b">b</a>)을 μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

방법2: aμ—μ„œ b둜 μ΄λ™ν•˜λŠ” 링크(<a href="b.html">b</a>)에 data-ajax="false" (ν˜Ήμ€
rel="external" λ“±)을 μ„€μ •(<a href="b.html" data-ajax="false">b</a>)ν•˜λŠ” κ²ƒμž…λ‹ˆ
λ‹€. λŒ€μ‹  νŽ˜μ΄μ§€ μ „ν™˜λ“±μ— 버벅거림이 λ°œμƒν•˜κ³  μžλ°”μŠ€ν¬λ¦½νŠΈ λ³€μˆ˜λ“±μ΄ μ΄ˆκΈ°ν™”λ˜λ―€λ‘œ localStorage등을 μ΄μš©ν•΄ ν•„μš”ν•œ κ°’λ“€
을 μ €μž₯ν•΄λ‘κ±°λ‚˜ νŒŒλΌλ©”ν„°λ‘œ 전달해야 ν•©λ‹ˆλ‹€.

방법3: λͺ¨λ“  μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” νŽ˜μ΄μ§€a(<div id="a" data-role="page">)κ°€ μ†ν•œ html 파일
(a.html) μ•ˆμ— λ‘λŠ” κ²ƒμž…λ‹ˆλ‹€. 비둝 νŽ˜μ΄μ§€b(<div id="b" data-role="page">)κ°€ λ‹€λ₯Έ html 파일
(b.html)에 μžˆμ§€λ§Œ, ajaxλ₯Ό ν†΅ν•΄μ„œ λ‘œλ”©λ˜λ―€λ‘œ bνŽ˜μ΄μ§€κ°€ λ³΄μΌλ•Œλ„ url은 a.htmlμž…λ‹ˆλ‹€(/
a.html#b.html λ˜λŠ” /#b.html λ“±)

(μ„œλ²„λ₯Ό κ²½μœ ν•˜μ§€ μ•ŠλŠ”)μ›Ήμ•±μ—μ„œλŠ” 방법1을, (μ›Ήμ„œλ²„λ₯Ό 톡해 μ œκ³΅λ˜λŠ”)λͺ¨λ°”μΌμ›Ήμ‚¬μ΄νŠΈμ—μ„œλŠ” μ•„λž˜μ˜ 방법2κ°€ μ ν•©ν•˜κ³ , λͺ¨λ°”일웹사이
트둜 κ΅¬μΆ•λœ 것을 μ›Ήμ•±ν˜•νƒœλ‘œ λΉ λ₯΄κ²Œ λ³€ν™˜ν•˜λŠ” 것이라면 방법3도 κ³ λ €ν•΄λ³Ό 수 있고, 이 방법듀을 적절히 μ„žμ–΄μ„œ μ“Έ μˆ˜λ„ μžˆμŠ΅λ‹ˆ
λ‹€.

κ²Œμ‹œνŒμ— λͺ‡μ€„λ‘œ μ„€λͺ…ν•  수 μžˆλŠ” 뢀뢄이 μ•„λ‹ˆμ§€λ§Œ,
μ œκ°€ μ„€λͺ…λ“œλ¦° μ–˜κΈ°κ°€ jquerymobile의 λ¬Έμ„œλ₯Ό μ΄ν•΄ν•˜λŠ”λ° μ‘°κΈˆμ΄λ‚˜λ§ˆ 도움이 되길 λ°”λΌλ©΄μ„œ
λͺ‡ 자 μ μ–΄λ΄€μŠ΅λ‹ˆλ‹€.

그럼 이만...

EclipsE

unread,
May 4, 2011, 5:34:55β€―AM5/4/11
to μ•±μŠ€ν”„λ ˆμ†Œ
저도 λΉ„μŠ·ν•œλ“― λ‹€λ₯Έ μ§ˆλ¬Έμ„ ν•˜λ €κ³  ν•©λ‹ˆλ‹€.
μ›ΉμœΌλ‘œ κ΅¬ν˜„ν–ˆμ„λ•ŒλŠ” 잘 λ˜λ˜κ²ƒμ΄ μ†ŒμŠ€ κ·ΈλŒ€λ‘œ μ›Ήμ•±μœΌλ‘œ κ΅¬ν˜„ν•˜λ €ν•˜λ‹ˆ 잘 μ•ˆλ˜λŠ” 뢀뢄이 μžˆμ–΄μ„œμš”

링크λ₯Ό κ±Έλ•Œ μ—¬λŸ¬κ°€μ§€ μœ ν˜•μ΄ μ‘΄μž¬ν•˜λŠ”λ°μš”
a.htmlμ—μ„œ
1. <a href='#main'>
같은 a.html에 <div data-role="page" id="main">이 μ‘΄μž¬ν•˜λŠ” 경우

2. <a href='/test/list.html'> 물리적으둜 λ‹€λ₯Έ html에 쑴재 ν•˜μ§€λ§Œ 같은 도메인에 μžˆλŠ” 경우
*list.htmlμ•ˆμ— μ‘΄μž¬ν•˜λŠ” <div data-role='page'> <- μš”λΆ€λΆ„λ§Œ a.html에 λ™μ μœΌλ‘œ λΆ™κ²Œ 됨

3. <a href='http://test.com/test/list'> λ‹€λ₯Έ λ„λ©”μΈμ—μ„œ pageλ₯Ό κ°€μ Έμ˜€λŠ” 경우
*http://test.com/test/list <div data-role='page'> μ—­μ‹œλ‚˜ μš” λΆ€λΆ„λ§Œ λ™μ μœΌλ‘œ λΆ™
μŠ΅λ‹ˆλ‹€.

μ—¬κΈ°μ„œ 기쑴에 μ›ΉνŽ˜μ΄μ§€λ‘œ κ΅¬ν˜„ ν–ˆμ„λ•Œ μœ„ 3κ°€μ§€ κ²½μš°κ°€ μ „ν˜€ 문제 λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

μ›Ήμ•±μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 와쀑 3번과 같은 경우
졜초 <a href='http://test.com/test/list'>λ₯Ό ν΄λ¦­ν–ˆμ„λ•Œ
*http://test.com/test/listμ—μ„œ <div data-role='page'> λΆ€λ¬Έλ§Œ κ°€μ Έμ™€μ„œ λΆ™κΈ°λŠ”ν•˜λŠ”λ°
cssκ°€ 적용이 λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

졜초둜 cssκ°€ 적용 λ˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œ
<a href='http://test.com/test/list?Test=test '>와 같이 μ΅œμ΄ˆμ— 가져와 뢙인 data-url
둜 μ΄λ™ν•˜λŠ”κ²Œ μ•„λ‹ˆλΌ
같은 νŽ˜μ΄μ§€λ₯Ό λ‹€μ‹œ μš”μ²­ν•΄μ„œ 뢙이면 CSSκ°€ 적용이 λ©λ‹ˆλ‹€.

λ¬Όλ‘  a.htmlμ—λŠ” λͺ¨λ“  νŽ˜μ΄μ§€μ— μ μš©λ˜λŠ” css파일이 μ‘΄μž¬ν•©λ‹ˆλ‹€.

쀑볡 질문이 λ˜μ§€ μ•Šμ„κΉŒ ν•΄μ„œ μœ„ λ‚΄μš©λ“€μ„ λͺ‡λ²ˆμ”© 읽어 λ³΄μ•˜λŠ”λ°μš”
λ‹€λ₯Έ λ‚΄μš©μΈκ²ƒ κ°™μ•„μ„œ μ§ˆλ¬Έμ„ μ˜¬λ¦½λ‹ˆλ‹€.(같은 λ‚΄μš©μ΄λΌλ©΄ μ£„μ†‘ν•©λ‹ˆλ‹€)

Reply all
Reply to author
Forward
0 new messages