gpt4 book ai didi

javascript - jquery 可嵌套不更新

转载 作者:行者123 更新时间:2023-11-29 02:20:41 27 4
gpt4 key购买 nike

我正在使用 jquery nestable 创建一个潜在学生可能感兴趣的学术类(class)列表。从 mysql 中提取的 16 个类(class)如下所示:

<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>

并且原始列表和第二个容器的输出在文本区域中作为序列化的 json 数据输出,如下所示:

 Serialised Output (per list)
<textarea id="nestable-output"></textarea>
<textarea id="nestable2-output" name="nestable2-output"></textarea>

同样没有真正的问题。文本区域稍后将更改为隐藏输入。除了有时当我将列表项从左列拖到右列时,该值不会更新。这是 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')));

});

它只是有时会失败。然后,如果我重新订购第二个容器中的列表,它会更新,但在我再次重新订购之前不会更新任何新项目。非常感谢任何帮助。

最佳答案

我找到了答案。问题出在 jquery.nestable.js 文件中,第 475 行左右是这样的:

$(this).data("nestable-id", new Date().getTime());

在更快的机器上,似乎没有足够的毫秒时间让脚本看到发生了变化。替换为:

$(this).data("nestable-id", Math.round(Math.random() * Math.pow(10, 16)));

任何一代随机数似乎都可以,所以这个答案并不是唯一可以做到的方法。

关于javascript - jquery 可嵌套不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32363285/

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