Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery排序失败_Javascript_Jquery_Html - Fatal编程技术网

Javascript jQuery排序失败

Javascript jQuery排序失败,javascript,jquery,html,Javascript,Jquery,Html,我有以下html结构(无限制): 它的街区3 3. 它的街区2 2. 我想通过单击如下按钮对其进行排序: <div class="wrapper"> <div class="content"> Its block 2 <--- new order <div class="number">2</div> <--- new order </div> </div> <div cla

我有以下html结构(无限制):


它的街区3
3.
它的街区2
2.
我想通过单击如下按钮对其进行排序:

<div class="wrapper">
   <div class="content"> Its block 2  <--- new order
      <div class="number">2</div> <--- new order
   </div>
</div>

<div class="wrapper">
   <div class="content"> Its block 3  <--- new order
      <div class="number">3</div> <--- new order
   </div>
</div>


它的block 2尝试用以下内容更改代码:-

var toggle="high";
//how to toggle?
$(function(){
 $('.sort').click(function () {
    if (toggle == "high") {            
        toggle = "low";
        $('.list').html($('.list .wrapper').sort(sortLow));
    } else {          
        toggle = "high"
        $('.list').html($('.list .wrapper').sort(sortHigh));
    }
  });
});

尝试使用以下命令更改代码:-

var toggle="high";
//how to toggle?
$(function(){
 $('.sort').click(function () {
    if (toggle == "high") {            
        toggle = "low";
        $('.list').html($('.list .wrapper').sort(sortLow));
    } else {          
        toggle = "high"
        $('.list').html($('.list .wrapper').sort(sortHigh));
    }
  });
});

如果要排序,可以向每个内容div添加数据val属性:

<div class="content" data-val="2"> Its block 2  <--- new order

如果要排序,可以向每个内容div添加数据val属性:

<div class="content" data-val="2"> Its block 2  <--- new order

您的代码有两个问题

首先,排序是对字符串进行排序<例如,代码>返回“2”>“3”

另一个问题是,您正在使用的单击功能没有正确切换。我猜您对
.hover()
语法很熟悉,这就是您这样做的原因

如您所见,我正在强制
sortHigh
sortLow
返回数字。我还在单击功能中进行了低/高排序检查和切换

function sortHigh(a, b) {
    var date1 = Number($(a).find(".number").text());
    var date2 = Number($(b).find(".number").text());

    return date1 > date2;
};

function sortLow(a, b) {
    var date1 = Number($(a).find(".number").text());
    var date2 = Number($(b).find(".number").text());

    return date1 <= date2;
};

$(function(){
    var sortHighCheck = null;

    $('.sort').click(function(){
        if (sortHighCheck === true) {
            $('.wrapper').sort(sortLow).appendTo('.list')
            sortHighCheck = false;
        } else {
            $('.wrapper').sort(sortHigh).appendTo('.list')
            sortHighCheck = true;
        }
    });
});
功能(a、b){
var date1=Number($(a).find(“.Number”).text();
var date2=Number($(b).find(“.Number”).text();
返回日期1>日期2;
};
函数sortLow(a,b){
var date1=Number($(a).find(“.Number”).text();
var date2=Number($(b).find(“.Number”).text();

return date1您的代码有两个问题

首先,排序是对字符串进行排序。例如,返回“2”>“3”

另一个问题是,您正在使用的单击功能没有正确切换。我猜您熟悉
.hover()
语法,这就是您这样做的原因

如您所见,我正在强制
sortHigh
sortLow
返回数字。我还完成了排序低/高检查,并在单击功能中切换

function sortHigh(a, b) {
    var date1 = Number($(a).find(".number").text());
    var date2 = Number($(b).find(".number").text());

    return date1 > date2;
};

function sortLow(a, b) {
    var date1 = Number($(a).find(".number").text());
    var date2 = Number($(b).find(".number").text());

    return date1 <= date2;
};

$(function(){
    var sortHighCheck = null;

    $('.sort').click(function(){
        if (sortHighCheck === true) {
            $('.wrapper').sort(sortLow).appendTo('.list')
            sortHighCheck = false;
        } else {
            $('.wrapper').sort(sortHigh).appendTo('.list')
            sortHighCheck = true;
        }
    });
});
功能(a、b){
var date1=Number($(a).find(“.Number”).text();
var date2=Number($(b).find(“.Number”).text();
返回日期1>日期2;
};
函数sortLow(a,b){
var date1=Number($(a).find(“.Number”).text();
var date2=Number($(b).find(“.Number”).text();

return date1使用jQuery,您可以添加如下排序功能:

jQuery.fn.sortdomelments=(函数(){
返回函数(比较器){
返回Array.prototype.sort.call(this,comparator){
this.parentNode.appendChild(this);
});
};
})();
var srtdesc=真;
$(函数(){
$(“.sort”)。单击(函数(){
srtdesc=!srtdesc;
$(“.list”).children().sortdomlements(函数(a,b){
如果(srtdesc){
返回编号($(a).find('.Number').text())-Number($(b).find('.Number').text());
}否则{
返回编号($(b).find('.Number').text())-Number($(a).find('.Number').text());
}
});
});
});

排序按钮
它的街区3
3.
它的第一区
1.
它的街区2
2.

使用jQuery,您可以添加如下排序功能:

jQuery.fn.sortdomelments=(函数(){
返回函数(比较器){
返回Array.prototype.sort.call(this,comparator){
this.parentNode.appendChild(this);
});
};
})();
var srtdesc=真;
$(函数(){
$(“.sort”)。单击(函数(){
srtdesc=!srtdesc;
$(“.list”).children().sortdomlements(函数(a,b){
如果(srtdesc){
返回编号($(a).find('.Number').text())-Number($(b).find('.Number').text());
}否则{
返回编号($(b).find('.Number').text())-Number($(a).find('.Number').text());
}
});
});
});

排序按钮
它的街区3
3.
它的第一区
1.
它的街区2
2.


“使用我的脚本”-什么脚本?请在问题中直接显示相关代码,不仅仅是通过指向外部网站的链接。这也是问题所在,我想对两者进行排序,而是根据编号进行排序。因此“内容”和“编号”必须一起排序(它们是一个组)。“使用我的脚本”-什么脚本?请直接在问题中显示相关代码,而不仅仅是通过外部站点的链接。这也是问题所在,我想对两者进行排序,但要根据数字进行排序。因此“内容”和“数字”必须一起排序(它们是一个组)。大thx支持-绝对是我想要的!!因此我的单击操作(切换)错了…很高兴知道。@Pepe很高兴帮助你:)大thx支持-绝对是我想要的!!所以我的点击动作(切换)是错误的…很高兴知道。@Pepe很高兴帮助你:)也谢谢你的支持和解释!我也会测试你的方式…更新:我现在已经测试过了,也许我做错了什么,但它对我不起作用。谢谢链接-我知道,你编辑了html结构。这就是我的问题所在,结构无法修改。我已经修复了JSFIDLE它有你的结构:它所需要的是将所有东西向上移动一个级别,对
.wrapper
进行排序,并附加到
.list
Thx以进行更新,现在它像charm一样工作-非常支持!!我发现了一个bug,脚本在IE上不起作用;(-为什么?还有thx的支持和解释!我也会测试你的方式…更新:我现在已经测试过了,也许我做错了什么,但它对我不起作用。thx的链接-我知道,你编辑html结构。这是我的问题,结构无法修改。我已经修复了JSFIDLE,所以它有你的结构:它所需要的只是将所有内容提升一级,对
.wrapper
进行排序,并附加到
.list
Thx以进行更新,现在它可以像charm一样工作-非常支持!!我发现了一个bug,该脚本在IE中不起作用;(-为什么?看起来很有趣-我也会测试它。Thx支持!!看起来很有趣-我也会测试。Thx支持!!也支持Thx支持,但在我的情况下我不能添加任何html属性。也支持Thx支持,但在我的情况下我不能添加任何html属性。