javascript - jquery 在点击时对 li 重新排序

标签 javascript jquery html list onclick

我有下面的 jquery,它将单击的菜单项添加到无序列表的顶部。

<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
</ul>

$('li').on('click', function() {
    $(this).parent().prepend(this);
});

我希望发生的事情不是将其移至列表顶部,而是将其放置在列表中单击的下一个项目之后。例如,如果我单击 2 然后 3,则值为 2 的列表项将移至列表中的 3 之后,因此 html 将如下所示。

<ul>
    <li>1</li>
    <li>3</li>
    <li>2</li>
    <li>4</li>
    <li>5</li>
</ul>

我尝试使用下面的 jQuery see fiddle 来做到这一点,这在我第一次单击 2 然后 3 时有效,但如果继续单击则不起作用。如何实现这一目标?

$('li').on('click', function() {
    var test = this;
    console.log($(this).text());
    $('li').on('click', function() {
        $(this).after(test);
    });
    //$(this).parent().prepend(this);
});

最佳答案

我认为,您可能需要存储第一个点击元素,然后在第二次点击中使用它,如下所示

jQuery(function(){
    var item;
    $('li').on('click', function () {
        if (item) {
            $(this).after(item)
            item = undefined;
        } else {
            item = this;
        }
    });
})

演示:Fiddle

关于javascript - jquery 在点击时对 li 重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23752544/

相关文章:

javascript - 如何重新格式化对象中的数据。 (我如何使行成为键,其他列成为值)

HTML 表格 - 最大宽度不适用于 td 后代

html - css text-decoration 下划线在应用于输入按钮的文本时不起作用

javascript - Bootstrap 简单导航栏在我的页面中不起作用

javascript - 变量作为 jQuery 选择器焦点

javascript - 无法让 chai.spy.on 工作

javascript - "const something = () => ({..."箭头函数模式

javascript - 如何固定位置元素,以便在将鼠标悬停在一个元素上时,其他两个元素应保持在同一位置

javascript - jQuery - 无法选择最后一个选项组的第一个选项

javascript - 选择复选框、单选按钮和列表