Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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 单击下拉列表按价格对项目进行排序_Javascript_Django_Wagtail - Fatal编程技术网

Javascript 单击下拉列表按价格对项目进行排序

Javascript 单击下拉列表按价格对项目进行排序,javascript,django,wagtail,Javascript,Django,Wagtail,我有一个下拉列表和财产清单。下拉列表包含两个选项,从低到高和从高到低。如果任何用户单击任何一个下拉项,则列出的属性应按其价格排序。如何使用javascript实现这一点 property.html <div class="col-sm-6"> <div class="pxp-sort-form form-inline float-right"> <div

我有一个下拉列表和财产清单。下拉列表包含两个选项,从低到高和从高到低。如果任何用户单击任何一个下拉项,则列出的属性应按其价格排序。如何使用javascript实现这一点

property.html

                <div class="col-sm-6">
                  <div class="pxp-sort-form form-inline float-right">
                      <div class="form-group">
                          <select class="type-regular custom-select" id="pxp-sort-results" name="price-sorting">
                              <option value="" selected="selected disabled">Default Sort</option>
                              <option class="price-sorting" value="l2h" id="l2h">Price (Lo-Hi)</option>
                              <option class="price-sorting" value="h2l">Price (Hi-Lo)</option>

                          </select>
                      </div>

                  </div>
              </div>

            <div class="row products-grid">
              {% for item in properties.all %}
              <div class="col-sm-12 col-md-6 col-xxxl-4 product">
                  <a href="{% pageurl item %}" class="pxp-results-card-1 rounded-lg" data-price="{{ item.price }}" data-prop="1">
                      <div id="property-{{item.id}}" class="carousel slide" data-ride="carousel" data-interval="false">
                          <div class="carousel-inner">
                              {% for j in item.prop_images.all %}
                                {% image j.prop_img original as property_img %}
                                <div class="carousel-item {% if forloop.first %} active {% endif %}" style="background-image: url('{{property_img.url}}')"></div>
                              {% endfor %}
                          </div>
                          <span class="carousel-control-prev" data-href="#{{item.prop_name}}" data-slide="prev">
                              <span class="fa fa-angle-left" aria-hidden="true"></span>
                          </span>
                          <span class="carousel-control-next" data-href="#property-{{item.id}}" data-slide="next">
                              <span class="fa fa-angle-right" aria-hidden="true"></span>
                          </span>
                      </div>
                      <div class="pxp-results-card-1-gradient"></div>
                      <div class="pxp-results-card-1-details" id="prop-dtls">
                          <div class="pxp-results-card-1-details-title">{{item.prop_name}}</div>
                          <div class="pxp-results-card-1-details-price price">{{item.price}}</div>
                      </div>
                      <div class="pxp-results-card-1-features">
                          <span>{{item.bedroom}} BD <span>|</span> {{item.bathroom}} BA <span>|</span> {{item.sqft}} SF</span>
                      </div>
                      <div class="pxp-results-card-1-save"><span class="fa fa-star-o"></span></div>
                  </a>
              </div>
              {% endfor %}

          </div>

默认排序
价格(低-高)
价格(高-低)
{properties.all%中的项的%s}
{%endfor%}

这些值是从后端动态生成的。

您可以使用Javascript(对DOM元素重新排序)或从服务器获得的响应来实现这一点

JS:


下面的代码完全符合我的要求

$(document).on("change", ".price-sorting", function() {

var sortingMethod = $(this).val();

if(sortingMethod == 'l2h')
{
    sortProductsPriceAscending();
}
else if(sortingMethod == 'h2l')
{
    sortProductsPriceDescending();
}

});
function sortProductsPriceAscending()
{
    var products = $('.product');
    products.sort(function(a, b){
    return $(a).data("price") - $(b).data("price")});
    $(".products-grid").html(products);

}

function sortProductsPriceDescending()
{
    var products = $('.product');
    products.sort(function(a, b){ return $(b).data("price") - $(a).data("price")});
    $(".products-grid").html(products);

}
HTML代码

<div class="col-sm-6">
                  <div class="pxp-sort-form form-inline float-right">
                      <div class="form-group">
                          <select class="type-regular custom-select price-sorting" id="pxp-sort-results">
                              <option value="" selected="selected disabled">Default Sort</option>
                              <option value="l2h" id="l2h">Price (Lo-Hi)</option>
                              <option value="h2l">Price (Hi-Lo)</option>

                          </select>
                      </div>
                      <div class="form-group d-flex">
                          <a role="button" class="pxp-map-toggle"><span class="fa fa-map-o"></span></a>
                      </div>
                  </div>
              </div>

<div class="row products-grid">
              {% for item in properties.all %}
              <div class="col-sm-12 col-md-6 col-xxxl-4 product" data-price="{{ item.price }}">
                  <a href="{% pageurl item %}" class="pxp-results-card-1 rounded-lg"  data-prop="1">
                      <div id="property-{{item.id}}" class="carousel slide" data-ride="carousel" data-interval="false">
                          <div class="carousel-inner">
                              {% for j in item.prop_images.all %}
                                {% image j.prop_img original as property_img %}
                                <div class="carousel-item {% if forloop.first %} active {% endif %}" style="background-image: url('{{property_img.url}}')"></div>
                              {% endfor %}
                          </div>
                          <span class="carousel-control-prev" data-href="#{{item.prop_name}}" data-slide="prev">
                              <span class="fa fa-angle-left" aria-hidden="true"></span>
                          </span>
                          <span class="carousel-control-next" data-href="#property-{{item.id}}" data-slide="next">
                              <span class="fa fa-angle-right" aria-hidden="true"></span>
                          </span>
                      </div>
                      <div class="pxp-results-card-1-gradient"></div>
                      <div class="pxp-results-card-1-details" id="prop-dtls">
                          <div class="pxp-results-card-1-details-title">{{item.prop_name}}</div>
                          <div class="pxp-results-card-1-details-price price">&#8377 {{item.price}}</div>
                      </div>
                      <div class="pxp-results-card-1-features">
                          <span>{{item.bedroom}} BD <span>|</span> {{item.bathroom}} BA <span>|</span> {{item.sqft}} SF</span>
                      </div>
                      <div class="pxp-results-card-1-save"><span class="fa fa-star-o"></span></div>
                  </a>
              </div>
              {% endfor %}

          </div>

默认排序
价格(低-高)
价格(高-低)
{%endfor%}
$(document).on("change", ".price-sorting", function() {

var sortingMethod = $(this).val();

if(sortingMethod == 'l2h')
{
    sortProductsPriceAscending();
}
else if(sortingMethod == 'h2l')
{
    sortProductsPriceDescending();
}

});
function sortProductsPriceAscending()
{
    var products = $('.product');
    products.sort(function(a, b){
    return $(a).data("price") - $(b).data("price")});
    $(".products-grid").html(products);

}

function sortProductsPriceDescending()
{
    var products = $('.product');
    products.sort(function(a, b){ return $(b).data("price") - $(a).data("price")});
    $(".products-grid").html(products);

}
<div class="col-sm-6">
                  <div class="pxp-sort-form form-inline float-right">
                      <div class="form-group">
                          <select class="type-regular custom-select price-sorting" id="pxp-sort-results">
                              <option value="" selected="selected disabled">Default Sort</option>
                              <option value="l2h" id="l2h">Price (Lo-Hi)</option>
                              <option value="h2l">Price (Hi-Lo)</option>

                          </select>
                      </div>
                      <div class="form-group d-flex">
                          <a role="button" class="pxp-map-toggle"><span class="fa fa-map-o"></span></a>
                      </div>
                  </div>
              </div>

<div class="row products-grid">
              {% for item in properties.all %}
              <div class="col-sm-12 col-md-6 col-xxxl-4 product" data-price="{{ item.price }}">
                  <a href="{% pageurl item %}" class="pxp-results-card-1 rounded-lg"  data-prop="1">
                      <div id="property-{{item.id}}" class="carousel slide" data-ride="carousel" data-interval="false">
                          <div class="carousel-inner">
                              {% for j in item.prop_images.all %}
                                {% image j.prop_img original as property_img %}
                                <div class="carousel-item {% if forloop.first %} active {% endif %}" style="background-image: url('{{property_img.url}}')"></div>
                              {% endfor %}
                          </div>
                          <span class="carousel-control-prev" data-href="#{{item.prop_name}}" data-slide="prev">
                              <span class="fa fa-angle-left" aria-hidden="true"></span>
                          </span>
                          <span class="carousel-control-next" data-href="#property-{{item.id}}" data-slide="next">
                              <span class="fa fa-angle-right" aria-hidden="true"></span>
                          </span>
                      </div>
                      <div class="pxp-results-card-1-gradient"></div>
                      <div class="pxp-results-card-1-details" id="prop-dtls">
                          <div class="pxp-results-card-1-details-title">{{item.prop_name}}</div>
                          <div class="pxp-results-card-1-details-price price">&#8377 {{item.price}}</div>
                      </div>
                      <div class="pxp-results-card-1-features">
                          <span>{{item.bedroom}} BD <span>|</span> {{item.bathroom}} BA <span>|</span> {{item.sqft}} SF</span>
                      </div>
                      <div class="pxp-results-card-1-save"><span class="fa fa-star-o"></span></div>
                  </a>
              </div>
              {% endfor %}

          </div>