【问题标题】:Sortable list contains between given numbers jquery可排序列表包含给定数字jquery之间
【发布时间】:2018-11-08 14:49:59
【问题描述】:

我正在尝试在 data-id 中的给定数字之间使用可排序列表 我使用代码来更新药物的数据 ID。但我的代码从 1 更新到 6 我想要它作为 11 到 16 或 21 至 26 .... 所以我只希望顶部或起始数据 id 总是起始数据 id 但现在它总是变成 1

jQuery('.photos').sortable({
    stop: function(event, ui){
        $(".ui-sortable li").each(function(i, el){
               $(el).attr('data-id',$(el).index()+1);
        });
    }
});
#sortable { list-style-type: none; margin: 0; padding: 0; width: 60%; }
#sortable li { margin: 0 3px 3px 3px; padding: 0.4em; padding-left: 1.5em; font-size: 1.4em; height: 18px; cursor:move; }
#sortable li span { position: absolute; margin-left: -1.3em; }
#sortable li.fixed{cursor:default; color:#959595; opacity:0.5;}
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script>
<ul class="photos ui-sortable">
    <li class="photo" data-id="11">pawal</li>
    <li class="photo" data-id="12">sigma</li>
    <li class="photo" data-id="13">notea</li>
    <li class="photo" data-id="14">missouri</li>
    <li class="photo" data-id="15">Ooops</li>
    <li class="photo" data-id="16">Ratee</li>
</ul>

JS FIDDLE LINK

【问题讨论】:

    标签: javascript jquery css jquery-ui-sortable


    【解决方案1】:

    .each 接受迭代器变量i 它从集合0 的第一个索引开始并转到集合中的最后一个元素,如果你想要一个自定义值,你应该声明一个变量并初始化它到 x 并在 .each 循环的每次迭代中将其递增 1

    修改这段代码:

    jQuery('.photos').sortable({
        stop: function(event, ui){
            let myIncrementor = GetLowestDataIdValue(); //Custom value returned from function
            $(".ui-sortable li").each(function(i, el){
                   $(el).attr('data-id',myIncrementor);
                   myIncrementor += 1; //increment it
            });
        }
    });
    
    function GetLowestDataIdValue(){
        let lowestVal = -1;
        $('.photos.ui-sortable').find('li').each(function(i, el){
             if(parseInt($(el).attr('data-id')) < lowestVal || lowestVal === -1){
                   lowestVal = parseInt($(el).attr('data-id'));
             }
        });
    
        return lowestVal;
    }
    

    JSFIDDLE

    【讨论】:

    • 我想从列表项中获取第一个值。不像给定值的静态 11。你能建议一下吗
    • @LemonKazi 所以你希望集合的最低 data-id 值来初始化 myIncrementor 正确吗?
    • 是的,你说得对。最小的将是起始编号
    • @LemonKazi 好的。请查看我的更新答案,这是一个有效的小提琴 (jsfiddle.net/c2e7z4dq/17)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多