(在这里使用jquery ui)

小提琴:
http://jsfiddle.net/sP3UZ/2677/

目标:当拖动任何一个蓝色按钮时,另一个按钮应该被隐藏,我通过index()计算dom上.user_task的先前实例。

选择器中没有:visible部分,代码可以正常工作,我得到的总项目比单击的项目要多,在选择器中加上:visible总是返回-1。

$("#sortable").sortable({
    items: ".user_task",
    appendTo: "body",
    helper: "clone",
    revert: true,
    start: function(event, ui) {
        var taskid = ui.item.data("taskid");
        $("[data-taskid='" + taskid + "']").not(ui.helper).hide();

        var x = $(".user_task:visible").index(ui.item);
        $("#counter").text(x);
    },
});


我的最终结果应该是,拖动最后一个蓝色按钮并且x = 2(例如)

最佳答案

讨厌的骇客

$("#sortable").sortable({
    items: ".user_task",
    appendTo: "body",
    helper: "clone",
    revert: true,
    start: function (event, ui) {
        var taskid = ui.item.data("taskid");
        $("[data-taskid='" + taskid + "']").not(ui.helper).hide();

        var $usertasks = $(".user_task");
        var all = $usertasks.index(ui.item);
        var hidden = $usertasks.slice(0, all).not(':visible').length;
        var x = all - hidden;

        $("#counter").text(x);
    },
});


演示:Fiddle

关于javascript - 仅选择器中的可见项始终返回-1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18957481/

10-12 15:38