1

(ここでは 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になるはずです(たとえば)

4

1 に答える 1

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 $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);
    },
});

デモ:フィドル

于 2013-09-23T11:26:08.537 に答える