如何在jQuery中成功绑定事件

eli*_*ium 5 ajax jquery

所以这是我的代码:

$(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(){
}})
Run Code Online (Sandbox Code Playgroud)

#form这里有一个<select>元素.ajax调用返回一个带有新<select>元素的html .
它很好用:在#chdirdiv中我得到一个新的下拉元素.但是success部件内部的事件只发射一次.然后这个事件根本不起作用了.
我能做些什么来使新创建的<select>元素以与第一个元素相同的方式工作?

CMS*_*CMS 10

你是getDirs直接在bind方法调用上调用函数,你应该只在这个函数返回另一个函数时才这样做,但我认为情况并非如此.

更改:

$('#chdir select').bind('change', getDirs());
Run Code Online (Sandbox Code Playgroud)

至:

$('#chdir select').bind('change', getDirs);
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用的是jQuery 1.4+,则只能将该change事件与该live方法绑定一次,之后您无需重新绑定该事件:

$(document).ready(function () {
  $('#chdir select').live('change', getDirs);
});
Run Code Online (Sandbox Code Playgroud)