在ajax页面加载后,Select2不能工作(渲染)

时间:2015-12-08 07:13:32

标签: jquery ajax plugins pageload

我有使用select2插件的页面:

$(function() {
    if($('.su-tech').length) {
        $('.su-tech').select2({
            allowClear: true,
            width: '100%'
        });
    }
});

和这样的HTML代码:

<select class="select2 su-tech" style="width:100%;">                                                    
    <option value="1" >option1</option>
    <option value="2" >option2</option>
    <option value="3" >option3</option>
</select>

我也用ajax用jQuery加载html内容:

$(document).on("click", "#page1", function () {
    $.ajax({
        type: 'POST',
        url: "/example-page1",
        success: function (result) {
            $('.ajax_content').html(result);
        },
    })
})

有了这个条件我的select2无法渲染并且无法正常工作。如何使用ajax内容加载来渲染插件。

1 个答案:

答案 0 :(得分:2)

问题是您正在.ajax_content内重新创建DOM。要解决此问题,您可以创建一个initialize函数,并为需要在DOM上初始化的所有控件添加代码,如下所示

function Initialize()
{
    if($('.su-tech').length) {
            $('.su-tech').select2({
                allowClear: true,
                width: '100%'
            });
    }
} 

然后在每个Ajax请求成功时调用此函数,如下所示

$(document).on("click", "#page1", function () {
    $.ajax({
        type: 'POST',
        url: "/example-page1",
        success: function (result) {
            $('.ajax_content').html(result);
            Initialize(); // after the HTML update
        },
    })
})

希望这适合你

相关问题