嗨,我仍然围绕着jQuery。我对它很新,每天都在学习。我更习惯于javascript,因为你知道一步一步发生了什么。
即使jQuery是"写得更少,做更多"功能没有清楚解释,我觉得很混乱。
无论如何我的问题......我有一个可排序的函数,其中随机列出了7个数字。在这种情况下,7,1,6,2,3,5,4 ...用户可以按照他们希望的任何顺序拖动数字。我希望jQuery发出警报说“#34;做得好”# 34;当用户匹配.sortable" #list"数字顺序正确。
我知道jQuery代码中有javascript的元素。不确定jQuery的等价物是什么?
感谢。
HTML:
<ul id="list" class="inline-list no-bullet">
<li>7</li>
<li>1</li>
<li>6</li>
<li>2</li>
<li>3</li>
<li>5</li>
<li>4</li>
</ul>
jQuery的:
$(document).ready(function () {
$("#list").sortable({
revert: true,
containment: 'parent',
update: function (event, ui) {
alert("List updated");
}
var orderedList = [1, 2, 3, 4, 5, 6, 7];
for (i = 0; i <list.length; i++)
{
if (orderedList[i] == "list"[i])
{
alert('Well Done!');
}
});
});
答案 0 :(得分:1)
你有很多问题:
var "trueOrder" = ...
):var trueOrder = [1, 2, 3]
。orderedList
应该是trueOrder
"list"[i]
但list[i]
(除非您要访问对象键值:window["some_global"]
)。请参阅下面的固定代码。
$(document).ready(function () {
var $list = $("#list");
$list.sortable({
revert: true,
containment: 'parent',
update: function (event, ui) {
var trueOrder = [1, 2, 3, 4, 5, 6, 7];
var isFine = true;
var list = $.map($list.children(), function (c) {
return parseInt($(c).text());
});
for (i = 0; i < list.length; i++) {
if (trueOrder[i] !== list[i]) {
isFine = false;
break;
}
}
if (isFine) {
alert("Well done!");
}
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.3/jquery-ui.min.js"></script>
<ul id="list" class="inline-list no-bullet">
<li>7</li>
<li>1</li>
<li>6</li>
<li>2</li>
<li>3</li>
<li>5</li>
<li>4</li>
</ul>