gpt4 book ai didi

jquery - 使用带有 ajax 加载内容的 jquery Bootstrap 模式时加载 jQuery select2 时出错

转载 作者:行者123 更新时间:2023-12-01 04:45:33 25 4
gpt4 key购买 nike

我正在加载 Bootstrap Modal使用 AJAX。结果模态工作完美,但是 Select2加载的框未初始化。

如何修复它?

这是我的代码:

index.php(html):

<a href="content.php" data-target="#ajax" data-toggle="modal" class="btn green">
Load Select
</a>

<div class="modal fade" id="ajax" role="basic" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content"></div>
</div>
</div>

index.php(js):

$("#select2_content").select2({
allowClear: true
});

content.php:

<select name="content" id="select2_content" class="form-control select2">
<option value="A">A</option>
...
<option value="Z">Z</option>
</select>

最佳答案

问题

如果您正在执行$("#select2_content").select2({})在初始页面加载然后 #select2_content尚不存在。因此 jQuery 表达式找不到任何内容,因此永远不会初始化选择框。然后它就不会再运行了。

解决方案

您可以执行以下任一操作:

  1. 当您通过 ajax 完成加载模式后,您需要点击 loaded.bs.modal event并运行一个函数来初始化任何新元素上的 select2。

  2. 或者您可以通过 <script> 引入该函数当 DOM 解析通过 ajax 引入的代码时将执行的 ajax 调用中的标记。只需确保在末尾添加脚本标记或将 javascript 包装在文档就绪函数中,否则它仍然不会存在于 dom 中。

选项 1

Here's a plunker返回以下代码:

<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="exampleModalLabel">AJAX Modal</h4>
</div>
<div class="modal-body">
<select id="select2_content" class="form-control select2">
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>

对于 ajax 调用,您可以通过以下网址访问它的运行版本:

http://run.plnkr.co/plunks/bq15voV79PEz07TWrS8D/

Here's a plunker使用以下代码使用 AJAX 调用:

<!DOCTYPE html>
<html>

<head>
<title>Bootstrap Modal AJAX Demo</title>
<link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.2/css/bootstrap.css" rel="stylesheet"/>
<link href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.css" rel="stylesheet"/>

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.2/js/bootstrap.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.js"></script>
<script>
$(function(){
$('#ajax').on('loaded.bs.modal', function (e) {
$("#select2_content").select2({
allowClear: true
});
})
.modal({
show: false,
remote: 'http://run.plnkr.co/plunks/bq15voV79PEz07TWrS8D/'
});
});
</script>
</head>

<body>

<btn data-target="#ajax" data-toggle="modal" class="btn btn-primary">
Load Select
</btn>

<div class="modal fade" id="ajax" role="basic" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content"></div>
</div>
</div>

</body>

</html>

选项 2

Here's a plunker返回以下代码:

<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="exampleModalLabel">AJAX Modal</h4>
</div>
<div class="modal-body">
<select id="select2_content" class="form-control select2">
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
<script>
$("#select2_content").select2({
allowClear: true
});
</script>

对于 ajax 调用,您可以通过以下网址访问它的运行版本:

http://run.plnkr.co/plunks/lpyMAERThlKeNieoX8GH/

Here's a plunker使用以下代码使用 AJAX 调用:

<!DOCTYPE html>
<html>

<head>
<title>Bootstrap Modal AJAX Demo</title>
<link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.2/css/bootstrap.css" rel="stylesheet"/>
<link href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.css" rel="stylesheet"/>

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.2/js/bootstrap.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.js"></script>
</head>

<body>

<a href="http://run.plnkr.co/plunks/lpyMAERThlKeNieoX8GH/"
data-target="#ajax" data-toggle="modal" class="btn btn-primary">
Load Select
</a>

<div class="modal fade" id="ajax" role="basic" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content"></div>
</div>
</div>

</body>

</html>

关于jquery - 使用带有 ajax 加载内容的 jquery Bootstrap 模式时加载 jQuery select2 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30377707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com