jquery nestable不更新
我正在使用jquery nestable来创建一个潜在学生可能感兴趣的学术课程列表。从MySQL中取出16个程序并列出如下:
<ol class="dd-list">
if(mysqli_num_rows($result)) {
$order = array();
while($item = mysqli_fetch_assoc($result)) {
echo '<li class="dd-item" data-id="'.$item['id'].'"><div class="dd-handle">',$item['program'],'</div></li>';
}
</ol>
} else {
<p>Sorry! There are no items in the system.</p>
}
那里没有问题。 我有第二个容器来放置程序:
<div class="dd" id="nestable2">
<h4>Place programs below in order of preference</h4>
<ol class="dd-list dd-placeholder">
<li class="dd-item" data-id="17">
<div class="dd-handle">Health Sciences Advisor</div>
</li>
</ol>
</div>
原始列表和第二个容器的输出以textareas的形式输出为序列化的json数据,如下所示:
Serialised Output (per list)
<textarea id="nestable-output"></textarea>
<textarea id="nestable2-output" name="nestable2-output"></textarea>
再次没有真正的问题。 textareas稍后会更改为隐藏输入。除了有时当我从左列拖动列表项到右侧时,值不会更新。 这里是jquery.nestable.js的链接
这里是脚本的形式:
$(document).ready(function()
{
var updateOutput = function(e)
{
var list = e.length ? e : $(e.target),
output = list.data('output');
if (window.JSON) {
output.val(window.JSON.stringify(list.nestable('serialize')));//, null, 2));
} else {
output.val('JSON browser support required for this application.');
}
};
// activate Nestable for list 1
$('#nestable').nestable({
group: 1
})
.on('change', updateOutput);
// activate Nestable for list 2
$('#nestable2').nestable({
group: 1
})
.on('change', updateOutput);
// output initial serialised data
$('#nestable2').attr('data-id', 'newvalue');
$('#nestable2').data('id', 'newvalue');
updateOutput($('#nestable').data('output', $('#nestable-output')));
updateOutput($('#nestable2').data('output', $('#nestable2-output')));
});
它只是有时失败。 那么如果我重新排列第二个容器中的列表,它会更新,但不会更新任何新项目,直到我再次重新订购。 任何帮助是极大的赞赏。
我找到了答案。 问题出现在475行的jquery.nestable.js文件中,ish是这样的:
$(this).data("nestable-id", new Date().getTime());
在更快的机器上,似乎脚本没有足够的时间以毫秒为单位看到发生了变化。 替换为:
$(this).data("nestable-id", Math.round(Math.random() * Math.pow(10, 16)));
任何一代随机数似乎都会这样做,所以这个答案并不是它可以完成的唯一方法。
链接地址: http://www.djcxy.com/p/59069.html