我正在使用jQuery和Ajax来填充选择。现在我正在尝试在成功回调中执行此操作,但是它被忽略了
奇怪的是我的console.log('test');在我的成功回调中起作用,但是我的DOM操作却没有。而且我的DOM操作在成功回调之外进行。
对我来说似乎很神奇。这是代码
$(document).ready(function(){
// This is working
//$('select[name="service"]').append('<option selected="selected" value="1">Test</option>');
$('select[name="region"]').change(function(){
$.ajax({
type: "GET",
url: "ajax/updateServices.php",
data: "region=" + $(this).val(),
dataType: "html",
success: function(data){
// this is also working
console.log('test');
// This is being ignored
$('select[name="service"]').append('<option selected="selected" value="1">Test</option>');
}
});
});
});
编辑
似乎selectize.js引起了问题。我要研究为什么selectize.js导致了这种情况。
最佳答案
我会与选择插件分享我的历史记录:
某些Select插件(例如SelectBox)要求您在再次填充选择或更改任何内容之前确实销毁了jquery对象,甚至selectedIndex也需要再次将select声明为select-plugin
例如(使用selectBox,但在其他对象上相同)
$("#MySelect").selectBox('destroy')
$("#MySelect").append("<option>New Option </option>");
$("#MySelect").selectBox()
另外,请确保在调试时
$('select[name="service"]')
返回所需的选择而不是空对象,在调试模式下(不使用调试模式?使用“源代码”标签下的Chrome Developer工具),大多数问题都可以解决。关于javascript - jQuery在Ajax成功回调中被忽略,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20903571/