Таким образом, вот мой код:
$(document).ready( function() {
$('#form').bind('change', function(){
$.ajax({
type: 'get',
url: 'api.php',
data: 'task=getdirs&formname='+$('#form').attr('value'),
dataType: "text",
success: function (html){
$('#chdir').html(html);
$('#chdir select').bind('change', getDirs());
}
});
});
function getDirs(){
}})
#form
здесь имеет a <select>
элемент. Вызов ajax возвращает часть HTML с новым <select>
элемент.
Это работает хорошее: в #chdir
отделение я получаю новый выпадающий элемент. Но событие в success
часть стреляет только однажды. Затем это событие не работает больше вообще.
Что я могу сделать для создания недавно созданный <select>
работа элемента таким же образом как первое?
Вы вызываете функцию getDirs
непосредственно при вызове метода bind
, вам следует делать это, только если это функция возвращает другую функцию, но я думаю, что это не так.
Изменение:
$('#chdir select').bind('change', getDirs());
Кому:
$('#chdir select').bind('change', getDirs);
Или, если вы используете jQuery 1.4+, вы можете привязать событие change
к методу live
только один раз, и вы не нужно повторно связывать событие после этого:
$(document).ready(function () {
$('#chdir select').live('change', getDirs);
});
Если я правильно вас понял, проблема в том, что событие не работает с вашим динамически созданным элементом select.
Если да, то решение простое ... попробуйте следующее:
$('#form').live('change', function()...
Обновление: В более новых версиях jQuery вы должны использовать on ()
вместо live ()
.
Вместо использования связывания попробуйте использовать .live . Для этого вам понадобится последняя версия jQuery.