我正在使用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/

10-11 15:29