我有使用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内容加载来渲染插件。
答案 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
},
})
})
希望这适合你