Вы создаете объекты jQuery из объектов jQuery, у которых есть проблема в этой строке (я предполагаю):
$(element + "option[value=" + $(element).val() + "]").attr("selected", "selected");
Поскольку element
является объектом jQuery (ключевое слово, объект), и вы добавляете строку к этому объекту.
Попробуйте это:
$(function () {
var element = $("#DropDownList1");
element.change(function () {
var theVal = element.val();//get the current value since it will be removed on the next line
element.find('option').removeAttr('selected'); //this is not working
element.find("option[value=" + theVal + "]").attr("selected", "selected");
});
});
Вот демоверсия: http://jsfiddle.net/LjhwW/1/
При создании этого демо я понял то же самое, что и «не я» (в комментариях). Почему вы вручную изменяете выбранный элемент опции для события change
, браузер все равно сделает это.