Итак, у меня есть список рядом с формой. Когда пользователь щелкает опцию в поле выбора, я делаю запрос для связанных данных, возвращаемых в объекте JSON, который помещается в элементы формы. Когда форма сохранена, запрос выполняется, и список перестраивается с обновленными данными. Поскольку он перестраивается, я пытаюсь использовать делегирование в родительском div списка для кода onchange. Проблема в том, что IE8 (большой шок) не запускает делегированное событие.
У меня есть следующий HTML:
<div id="listwrapper" class="span-10 append-1 last">
<select id="list" name="list" size="20">
<option value="86">Adrian Franklin</option>
<option value="16">Adrian McCorvey</option>
<option value="196">Virginia Thomas</option>
</select>
</div>
и следующий скрипт:
window.addEvent('domready', function() {
var jsonreq = new Request.JSON();
$('listwrapper').addEvent('change:relay(select)', function(e) {
alert('this doesn't fire in IE8');
e.stop();
var status= $('statuswrapper').empty().addClass('ajax-loading');
jsonreq.options.url = 'de_getformdata.php';
jsonreq.options.method = 'post';
jsonreq.options.data = {'getlist':'<?php echo $getlist ?>','pkey':$('list').value};
jsonreq.onSuccess = function(rObj, rTxt) {
status.removeClass('ajax-loading');
for (key in rObj) {
status.set('html','You are currently editing '+rObj['cname']);
if ($chk($(key))) $(key).value = rObj[key];
}
$('lalsoaccomp-yes').set('checked',(($('naccompkey').value > 0)?'true':'false'));
$('lalsoaccomp-no').set('checked',(($('naccompkey').value > 0)?'false':'true'));
}
jsonreq.send();
});
});
(я достал немного не связанных вещей). Так что все это работает как и ожидалось в Firefox, но IE8 отказывается запускать делегированное событие изменения в элементе select. Если я присоединяю функцию изменения непосредственно к выбору, то она работает просто отлично.
Я что-то упустил? IE8 просто не нравится: relay?
Sidenote: Я очень плохо знаком с mootools, javascripting и т. Д., Поэтому, если есть что-то, что можно улучшить в коде, пожалуйста, дайте мне знать тоже ..
Спасибо!