๋ฒํผ ํด๋ฆญ ํ ์ ํ ํญ๋ชฉ์ ์ด๋ ค๊ณ ํ์ง๋ง ์๋ํ์ง ์์ต๋๋ค. ํธ๋ฆฌ๊ฑฐ ๋ค์์ ์ฝ์
ํ๊ณ alert()ํ๋ฉด ์ด๋ฆฝ๋๋ค ...
(jquery์ ํจ๊ป ์ ํํ v1.0 ์ฌ์ฉ)
์์:
<select id="select">
<option value="1">a</option>
<option value="2">b</option>
<option value="3">c</option>
</select>
<br>
<button onclick="$('#select').trigger('chosen:open'); ">Press this button to open (doesnt work) </button>
<button onclick="$('#select').trigger('chosen:open'); alert('ups!');">Press this button to open (work???)</button>
<script>
$(document).ready(function() {
$('#select').chosen();
});
</script>
Fiddle(Safari์์)์์๋ ์ด๋ ๋ฒํผ๋ ์๋ํ์ง ์์ต๋๋ค.
์ด๋ค ๋ธ๋ผ์ฐ์ /๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์์ต๋๊น?
๋๋ ๊ทธ๊ฒ์ ํ ์คํธํ๋ค :
์ฒซ ๋ฒ์งธ ๋ฒํผ์ด ์๋ํ์ง ์์ต๋๋ค
๋ ๋ฒ์งธ ๋ฒํผ์ ์ต์
๋ชฉ๋ก์ ์ฝ๋๋ค("๊ฒฝ๊ณ " ์์๋ฅผ ๋ซ์ ๋๋ง ๋ซ์).
๋ฒํผ์ ํด๋ฆญํ๋ฉด Chosen์ด chosen:open
์ด๋ฒคํธ๋ฅผ ๋ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฒคํธ๋ ๊ณ์ํด์ DOM์ ๋ฒ๋ธ๋งํ๊ณ Chosen์ ํ์ฑ Chosen์ด ์๋ ์์์ ๋ํ ํด๋ฆญ์ ์ฆ์ ๊ฐ์งํ๋ฏ๋ก ... ๋ซ์ต๋๋ค. ๋ง์ด ๋ฉ๋๊น?
์ธ๋ผ์ธ JS๋ก ์์
ํ๋ ๊ฒฝ์ฐ ๊ฐ์ฅ ์ฌ์ด ์๋ฃจ์
์ setTimeout
๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ ์ด๋ฒคํธ ์คํ์์ ๋ฒ์ด๋๋ ๊ฒ์
๋๋ค.
onClick="setTimeout(function(){ $('#select').trigger('chosen:open'); }, 0)"
ํ์ง๋ง ์ธ๋ผ์ธ JS๋ฅผ ์ฌ์ฉํด์๋ ์ ๋๋ ๊ฒ์ด ๊ฑฐ์ ํ์คํฉ๋๋ค. ์ํ๋ ๊ฒฝ์ฐ setTimeout
๊ณ์ ์ฌ์ฉํ ์ ์์ง๋ง ์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ ์ค์งํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํฉ๋๋ค.
$('button').on("click", function(evt){
evt.stopPropagation();
$('#select').trigger('chosen:open');
});
์ด ์์ ์ฝ๋๋ก ๋ฐ์ด์ฌ๋ฆฐ์ ์ ๋ฐ์ดํธํ์ต๋๋ค. http://jsfiddle.net/EArg6/33/
@pfiller ๊ฐ์ฌ
@pfiller ์๊ฒ ๊ฐ์ฌ ์ ์ฐ๋ฆผ์ ๋ง์ด
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฒํผ์ ํด๋ฆญํ๋ฉด Chosen์ด
chosen:open
์ด๋ฒคํธ๋ฅผ ๋ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฒคํธ๋ ๊ณ์ํด์ DOM์ ๋ฒ๋ธ๋งํ๊ณ Chosen์ ํ์ฑ Chosen์ด ์๋ ์์์ ๋ํ ํด๋ฆญ์ ์ฆ์ ๊ฐ์งํ๋ฏ๋ก ... ๋ซ์ต๋๋ค. ๋ง์ด ๋ฉ๋๊น?์ธ๋ผ์ธ JS๋ก ์์ ํ๋ ๊ฒฝ์ฐ ๊ฐ์ฅ ์ฌ์ด ์๋ฃจ์ ์
setTimeout
๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ ์ด๋ฒคํธ ์คํ์์ ๋ฒ์ด๋๋ ๊ฒ์ ๋๋ค.ํ์ง๋ง ์ธ๋ผ์ธ JS๋ฅผ ์ฌ์ฉํด์๋ ์ ๋๋ ๊ฒ์ด ๊ฑฐ์ ํ์คํฉ๋๋ค. ์ํ๋ ๊ฒฝ์ฐ
setTimeout
๊ณ์ ์ฌ์ฉํ ์ ์์ง๋ง ์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ ์ค์งํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํฉ๋๋ค.์ด ์์ ์ฝ๋๋ก ๋ฐ์ด์ฌ๋ฆฐ์ ์ ๋ฐ์ดํธํ์ต๋๋ค. http://jsfiddle.net/EArg6/33/