<p>์„ ํƒ๋จ:์—ด๊ธฐ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ</p>

์— ๋งŒ๋“  2013๋…„ 12์›” 22์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: harvesthq/chosen

๋ฒ„ํŠผ ํด๋ฆญ ํ›„ ์„ ํƒ ํ•ญ๋ชฉ์„ ์—ด๋ ค๊ณ  ํ•˜์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠธ๋ฆฌ๊ฑฐ ๋‹ค์Œ์— ์‚ฝ์ž…ํ•˜๊ณ  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>

์˜ˆ: http://jsfiddle.net/EArg6/28/

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด 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/

๋ชจ๋“  5 ๋Œ“๊ธ€

Fiddle(Safari์—์„œ)์—์„œ๋Š” ์–ด๋Š ๋ฒ„ํŠผ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ๋ธŒ๋ผ์šฐ์ €/๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ํ…Œ์ŠคํŠธํ–ˆ๋‹ค :

  • ํŒŒ์ด์–ดํญ์Šค 25.0.1
  • ์˜คํŽ˜๋ผ 12.16
  • ํฌ๋กฌ 31.0.1650.63 m

์ฒซ ๋ฒˆ์งธ ๋ฒ„ํŠผ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
๋‘ ๋ฒˆ์งธ ๋ฒ„ํŠผ์€ ์˜ต์…˜ ๋ชฉ๋ก์„ ์—ฝ๋‹ˆ๋‹ค("๊ฒฝ๊ณ " ์ƒ์ž๋ฅผ ๋‹ซ์„ ๋•Œ๋งŒ ๋‹ซ์Œ).

๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด 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 ์—๊ฒŒ ๊ฐ์‚ฌ ์† ์“ฐ๋ฆผ์„ ๋งŽ์ด

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰