繁体   English   中英

根据数据属性范围显示 li 元素

[英]Show li elements based on data attribute range

我有 HTML 像:

<ul>
<li data-time="450">...</li>
<li data-time="430">...</li>
<li data-time="550">...</li>
<li data-time="750">...</li>
<li data-time="80">...</li>
<li data-time="170">...</li>
</ul>

我有 slider 它给了我最小值和最大值。 等等

min = 200;
max = 400;

如何使用 jquery 过滤(仅显示)日期时间值介于 200 和 400 之间的元素?

我试过了:

     $( "#slider-range" ).on( "slidechange", function( event, ui ) {
        console.log(ui.values);
$('li').hide();
        min = ui.values[0];
        max = ui.values[1];
        //dont know to show only <li> elements between min and max
    } );

您可以使用.each()来迭代项目。 提取data-time (使用.data()作为 getter 自动转换为数字),对于每个元素,如果超出/超出范围,则应用 display noneblock

 var min = 200; var max = 500; $( "li" ).each(function() { var $this = $(this); var time = $this.data('time'); $this.css('display', (time < min || time > max)? 'none': 'block'); });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <ul> <li data-time="450">450</li> <li data-time="430">430</li> <li data-time="550">550</li> <li data-time="750">750</li> <li data-time="80">80</li> <li data-time="170">170</li> </ul>

嘿试试这个片段。

$( "#slider-range" ).on( "slidechange", function( event, ui ) {
    console.log(ui.values);

    // hide all
    $('li').hide();

    // loop between min and max and select and show the ones the exist
    min = ui.values[0];
    max = ui.values[1];
    for(var value=min;value<=max;value++) {
        var liElement = $("li[data-time='"+ value +"']");
        if(liElement) {
            liElement.show();
        }
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM