Это было интересно. В раскрывающемся списке выбора, пытаясь не использовать jQuery (за исключением облегчения некоторых моих проблем при воссоздании), я столкнулся с проблемой, которая не позволяет каким-либо текущим браузерам ловить выбранную опцию. Вот мой код для страницы, воссоздающей проблему (помните, что jQuery не обязательно должен решать проблему, но более или менее просто говорит мне, что я делаю неправильно.
Это меня поставило в тупик.
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
</head>
<body>
<div id="select-holder" />
<input id="some-button" type="button">
<script type="text/javascript">
$("#some-button").click(function(){
var select_element = document.createElement('select');
select_element.setAttribute("id", "some-id");
select_element.setAttribute("name", "some-name");
var options = new Array();
for ( var i = 0; i < 3; i++ ){
options.push(new Option("Option " + i, "Value" + i, false, false));
}
options[1].setAttribute("selected", "selected");
for ( var option in options ){
select_element.appendChild(options[option]);
}
$("#select-holder").append(select_element);
});
</script>
</body>
</html>
HTML, который это создает:
<select id="some-id" name="some-name">
<option value="Value0">Option 0</option>
<option value="Value1" selected="selected">Option 1</option>
<option value="Value2">Option 2</option>
</select>
Но аномалия здесь заключается в том, что (по крайней мере в Firefox) выбранная опция заканчивается вариантом 0, который не является выбранным элементом DOM. В IE6 этот выпадающий список вообще не работает.
Есть альтернативный метод, который работает, который включает в себя объединение параметров вручную, который работает во всех протестированных мной браузерах.