jquery - 新的 UL 添加到 DOM 但未转换为可排序的 UL jquery
问题描述
直接在页面上的第一个 UL 效果很好,并且可以排序。当我尝试使用 JS 或 AJAX 添加另一个 UL 时,它只是一个 UL 并且无法排序。有没有办法将 HTML UL 转换为 jquery 排序?
<html lang="en">
<head>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script>
$( function() {
$( "#sortable" ).sortable();
$( "#sortable" ).disableSelection();
} );
$( function() {
$( "#sortable2" ).sortable();
$( "#sortable2" ).disableSelection();
} );
function myFunctionNew() {
var node = document.createElement("LI");
var textnode = document.createTextNode("Water");
node.appendChild(textnode);
document.getElementById("sortable").appendChild(node);
}
function myFunction(img_src) {
document.getElementById("sortable").innerHTML += "<li class=ui-state-default><span class=ui-icon ui-icon-arrowthick-2-n-s></span><img src="+img_src+".jpg></li>";
}
function myFunctionNewNEW()
{
document.getElementById("testing").innerHTML ="<ul id=sortable2><li>item 1</li><li>item 2</li><li>item 3</li></ul>";
}
</script>
</head>
<body>
<ul id="sortable">
<li class="ui-state-default">Item 2</li>
<li class="ui-state-default">Item 3</li>
</ul>
<br/><br/><br/>
<a href="javascript:void(0);" onclick=myFunction('person')>Person</a>
<a href="javascript:void(0);" onclick=myFunction('person2')>Person2</a>
<a href="javascript:void(0);" onclick=myFunctionNew()>Add ME</a>
<a href="javascript:void(0);" onclick=myFunctionNewNEW()>NEW Add ME</a>
<div id=testing>test area</div>
</body>
</html>
添加到 html 页面的添加项目应该是可排序的 UL jquery
解决方案
正如我所说,插件使用呈现的 HTML 运行。并且无法检测到新添加的内容,直到您刷新插件或在附加新内容后再次调用插件..所以
sortable
在附加内容后尝试使用$("#sortable2").sortable('refresh');
或再次调用插件$("#sortable2" ).sortable();
$( function() {
$( "#sortable" ).sortable();
$( "#sortable" ).disableSelection();
});
function myFunctionNew() {
var node = document.createElement("LI");
var textnode = document.createTextNode("Water");
node.appendChild(textnode);
document.getElementById("sortable").appendChild(node);
}
function myFunction(img_src) {
document.getElementById("sortable").innerHTML += "<li class=ui-state-default><span class=ui-icon ui-icon-arrowthick-2-n-s></span><img src="+img_src+".jpg></li>";
}
function myFunctionNewNEW()
{
document.getElementById("testing").innerHTML ="<ul id=sortable2><li>item 1</li><li>item 2</li><li>item 3</li></ul>";
$("#sortable2").sortable(); //<<<<<<<<<< HERE
$("#sortable2").disableSelection(); //<<<<<<<<<< HERE
}
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<ul id="sortable">
<li class="ui-state-default">Item 2</li>
<li class="ui-state-default">Item 3</li>
</ul>
<br/><br/><br/>
<a href="javascript:void(0);" onclick=myFunction('person')>Person</a>
<a href="javascript:void(0);" onclick=myFunction('person2')>Person2</a>
<a href="javascript:void(0);" onclick=myFunctionNew()>Add ME</a>
<a href="javascript:void(0);" onclick=myFunctionNewNEW()>NEW Add ME</a>
<div id=testing>test area</div>
与您的想法相同,ajax
您需要在 ajax 成功回调函数中并在添加新内容后调用插件
推荐阅读
- c++ - 仿射密码解密,输出大小写不同
- angular - 如何保持登录失败的引导模式?
- c++ - 如何通过 UDP 接收 QByteArray 并将其解析为位域结构?
- asp.net-core - 在asp net core中执行代码后传递路由值?
- javascript - 什么是“form.getHeaders();?
- selenium - 执行完成后删除用户数据目录
- javascript - 如何为不同的部分触发不同的模态
- python - 为 sqlalchemy ORM 查询中的映射类实体注册星型 SELECT (*) @compiles
- php - 已弃用在给定 appcfg 的情况下从 Google Cloud 项目下载旧版 PHP 代码?
- java - 如何避免在java中将空值发送到sql