所以这是我的代码:
$(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)