不会触发ajax成功后的JQuery.append()

时间:2014-08-14 07:48:01

标签: javascript jquery ajax

我的脑海里正在寻找原因并解决我的问题。我知道我错过了一些东西,但我不知道它在哪里。我的目标是在下拉列表更改后进行ajax调用,然后在select multiple中附加选项。

这就是我所拥有的:

$(document).ready( function(){
    $('#myselect').append("<option value='test1' selected>Test1</option>"); //this works

    $("#mydropdown").on('change', function(){
        $.ajax({
            type: "POST",
            url: "somepage.php",
            data: $("#someForm").serialize(),
            success: function(msg)
            {   
                alert("Hello World"); //this is triggered
                //below line of code does not work
                $('#myselect').append("<option value='test3' selected>Tes3</option>");
            }
        });
    });
});

为什么会这样?

2 个答案:

答案 0 :(得分:0)

所以我找到了解决问题的方法。我在select周围放了一个名为theDiv的特定ID的div,并像往常一样初始化它。然后在我的AJAX请求中我把

$( "#theDiv" ).empty(); //empty the diev so that select will be removed
//append select
$("#theDiv").append('<select multiple="multiple" id="myselect" name="myselect[]"><option>Some option</option></select>');
InitalizeMultiSelect(); //re-initialize the multiSelect

现在它对我来说工作正常。可能效率不高但似乎我没有找到任何方法去取消初始化multiSelect,所以我想这对我来说是最好的解决方案。

感谢您的所有时间和帮助。

答案 1 :(得分:-1)

代码

$('#myselect').append("<option value='test3' selected>Tes3</option>");

对我来说似乎没问题。但是比如检查我给你的两个建议

1)首先尝试这个

更改"<option value='test3' selected>Tes3</option>";

'<option value="test3" selected>Tes3</option>'

2)同时尝试使用selected='selected'

可能也会导致问题

我误解了myselect和mydropdown是相同的下拉列表。

抱歉,无论如何你的代码都没事。

do one thing, try to remove the class of the #myselect(if any class is there) to see if your code works