jQuery不重新排列元素在我的Django页面
jQuery Not Rearranging Elements on my Django Page
我正在尝试添加2个排序选项到网页。目前,当我点击相应的链接(。alpha和.finish),我在屏幕上看到一个动画,可以看出名称在移动,但输出保持不变。下面是我在谷歌搜索中找到的这个JSFiddle的jQuery脚本。
var $divs = $('div.col-xs-3');
$('.alpha').on('click', function () {
var alphabeticallyOrderedDivs = $divs.sort(function (a, b) {
return $(a).attr('data-name') > $(b).attr('data-name');
});
$('.people').html(alphabeticallyOrderedDivs);
});
$('.finish').on('click', function () {
var numericallyOrderedDivs = $divs.sort(function (a, b) {
return $(a).attr('id') < $(b).attr('id');
});
$('.people').html(numericallyOrderedDivs);
});
我正在使用Django来显示页面,目前有一个order_by来正确地按字母顺序排列每个div。这对它有影响吗?
三件事:
-
jQuery没有正式的
sort
函数,所以不要依赖它 -
它确实有(非正式地)从
Array.prototype
获得的排序函数。我们直接用这个。排序函数的回调工作方式,它期望返回一个数字,而不是一个布尔值:如果第一个参数应该出现在第二个参数之前,则为负数,如果它们在排序目的中相等,则为0,如果第二个参数应该出现在第一个参数之前,则大于0。 -
官方,
html
不接受jQuery对象或数组(只是字符串和函数),所以让我们使用empty().append(...)
代替:
所以要修复你的问题中的代码,首先我们使用get
从jQuery集合中获得一个真正的数组,然后我们使用localeCompare
来正确比较名称:
var $divs = $('div.col-xs-3');
$('.alpha').on('click', function () {
var alphabeticallyOrderedDivs = $divs.get().sort(function (a, b) {
// Note -----------------------------^^^^^^
return $(a).attr('data-name').localeCompare($(b).attr('data-name'));
// Note -------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
});
$('.people').empty().append(alphabeticallyOrderedDivs);
// Note -----^^^^^^^^^^^^^^
});
<input type="button" class="alpha" value="Alpha">
<div class="people">
<div class="col-xs-3" data-name="q">q</div>
<div class="col-xs-3" data-name="p">p</div>
<div class="col-xs-3" data-name="j">j</div>
<div class="col-xs-3" data-name="e">e</div>
<div class="col-xs-3" data-name="t">t</div>
<div class="col-xs-3" data-name="d">e</div>
<div class="col-xs-3" data-name="a">a</div>
<div class="col-xs-3" data-name="q">q</div>
<div class="col-xs-3" data-name="r">r</div>
<div class="col-xs-3" data-name="x">x</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
相关文章:
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 元素在我的代码中不会.fadeTo.Don'I don’我不知道;s错误的JavaScript、JQuery、H
- 是否有任何可能的原因使我应该指定类型=“”;按钮“;用于我的按钮元素
- jQuery-将列表项的一个元素移动到同一项的另一个元素中+对我的列表中的每个项执行此操作
- Angular没有根据模型更新我的选择元素
- 我想将链接关联到动态创建的p元素上的相应文章
- I'我试图在我的网页上动态地上下移动元素.我该怎么做
- 我想隐藏/显示我的SVG元素,同时在anguarJS中使用它
- 我的ID获取元素不起作用
- setInterval 仅在我的 5 个元素中的 4 个上运行
- 我应该如何从我的javascript中引用DOM元素
- 为什么当我分配给element.style时,我的元素的样式没有改变
- 火虫找到隐藏我的元素的脚本
- 为什么动画完成后我的元素不再隐藏
- 当我单击chrome的输入类型=搜索元素上的X时,是否触发了任何事件
- 如何使用“;点击“;在创建我的元素之前
- Javascript似乎并没有取消隐藏我的元素
- 在 Rails 表单中,如何使用 Jquery 隐藏和取消隐藏表单元素?我的脚本不起作用
- AngularJS:如何判断我的控制器是否绑定到我的ng-repeat指令元素?我的数据没有显示
- 如何使用参数对象从数组中删除元素-我的代码有什么问题