这个杀了我:(。我正在加载已保存的过滤器集并动态构建每个过滤器,在$ .get()响应函数内。我发现,即使我正确创建了唯一的ID我的每个选择和输入,我都无法在构建它们的函数内部访问这些输入的值。我尝试了多种方法为jQuery选择过程添加延迟但没有任何效果。
function onSavedFilterChange(item){
$.get('url',
function(response) {
//filters with uniquely ID'd inputs get built here
//Can't access them here, immediately after creation
}
);
// Can't access them here either
}
$(document).ready(function(){
$('#randomButton').click(function(){
// but here, I can access the new inputs!!
});
});
我添加元素的方式有点复杂,可能是我问题的根源。对于返回的每个保存的过滤器集,我首先克隆一个初始化的div并设置它的id属性:
newFilter = $('#initialFilter')
.clone()
.removeAttr('id')
.attr('id', 'fd_'+filterCount);
这个div有三个输入;前两个是选择,第三个可以是选择或文本输入。在克隆了div之后,我将第一个选择的值设置为:
var thisSelect = newFilter.find('select.filterBy');
var thisFieldName = rows[filterCount-1]['FIELD_NAME'];
thisSelect.val(thisFieldName);
接下来,根据thisFieldName的值,我使用另一个ajax调用构建第二个select的选项,并使用另一个ajax调用构建第三个输入。
它刚刚发生在我身上......因为我正在修改使用ColdFusion构建的现有站点,最后两个ajax调用是通过ExtJS ajax代理调用的。我敢打赌,ExtJS与jQuery的搭配并不好,我将不得不重写这两个函数。
无论是那个还是我疯狂地窝里接到电话来接听电话???