2014-09-03 56 views
0

我有一個容器內的列表項div。結構如下所示:如何確定子元素是否在包含祖先之外?

<div id="container"> 
    <ul> 
    <li></li> 
    <li></li> 
    <li></li> 
    <li></li> 
    </ul> 
</div> 
我使用jQuery排序交換列表項

,如圖所示here

我想確定列表項是否被拖動到包含div之外,如果是,請刪除它。

我一直試圖做的是使用offset()確定從div列表項的距離,但它給我的結果不一致:

$(".sortable").sortable({ 
    revert: true, 
    update: function(event, ui) { 
     console.log("difference: " + (parseInt($(ui.item).offset().top,10) - parseInt($("#importer-container").offset().top,10))); 
    } 
}); 

有時候它說1.有時說26的容器如果有問題,div有一個滾動條。

如何確定孩子是否在父母之外?

+0

出方父ü意味着DOM結構或可視部分? – Sunand 2014-09-03 20:11:14

+0

外部父指含有id的容器在div外部拖動列表項。 – Donato 2014-09-03 20:11:53

+0

可能的重複:http://stackoverflow.com/questions/9403422 – PeterKA 2014-09-03 21:03:05

回答

0
$(".sortable").sortable({ 
    revert: true, 
    update: function(event, ui) { 
     if (ui.item.closest("#container").length) { 
      // inside container 
     } else { 
      // outside container 
     } 
    } 
}); 

http://api.jquery.com/closest/

+0

它似乎沒有工作。即使在div外拖動列表項,else塊也不會運行。 – Donato 2014-09-03 20:19:34

+0

我需要能夠確定鼠標移出事件時的位置,因爲jquery可排序會將元素捕捉回列表中。 – Donato 2014-09-03 20:24:36

+1

@DanStayntouch嘗試將ui.item.closest(「#container」)'ui.item.closest(「#container」)'改爲'ui.item.closest(「#container」)。返回true – Huangism 2014-09-03 21:02:10

相關問題