2013-09-23 58 views
1

(在這裏使用jQuery用戶界面)可見項目僅在選擇總是返回-1

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

目的:當拖動任何藍色的按鈕,另外一個應該被隱藏和我以前的數通過index()在dom上的.user_task實例。

沒有:我的選擇器中的可見部分,代碼正常工作,我得到了單擊之前的總項目,並添加了:在選擇器中可見,它總是返回-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(例如)

+1

你爲什麼找可見指數?是否有任何具體的邏輯需要 –

+0

請參閱我對Rory的答案的評論。 –

+0

Irvin,它只計算可見的元素總數,而不是按下的元素之前的元素(如果你開始在你的代碼中拖動1代表x = 4,它應該是x = 0) –

回答

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

演示:Fiddle

+0

我仍然得到相同的結果,拖動時「4」結果應該是2,它仍然在計算隱藏的元素。 –

+0

我不想統計所有可見的元素,只是我拖動的元素之前的元素。 –

+0

乾杯!編輯現場! –