2013-04-02 1 views
1

를 반환 :

$(".roomblock_slots li").droppable({ activeClass: "drop_here", hoverClass: "hover_here", tolerance: "pointer", 
     drop: function (event, ui) { 
      var container = $(this); 
      if (container.contains(container,"div")) { 
       return false; 
      } 
      return true; 
     } }); 

나는 리 요소에 요소를 삭제하기 위해 노력하고있어, 나는 확인하려면 div 요소가 포함 된 경우 문제이며, 함수 자체는 항상 false를 돌려 결코로 간다 "false를 반환;", 리튬이 같은 div 요소, 포함 된 경우에도 :

<li class="ui-droppable"> 
    <div class="ui-draggable"> 
</li> 

가 어떻게이 문제를 해결할 수 있습니까를?

+0

컨테이너 .has ('div') ' – adeneo

답변

3

유틸리티 메서드 $.contains이 예상대로 작동하지 않습니다. containercontained, 당신은 그것을 좋아 사용 : 걸리는

http://api.jquery.com/jQuery.contains/

매개 변수는 두 매개 변수가 없습니다 ... jQuery를 개체 또는 선택기 DOM 요소로되어 있습니다

$.contains(container, contained) 

.

다른 특정 요소에 포함 된 특정 요소를 찾고 있지 않으므로 $.contains을 사용할 수 없습니다. 다른 방법을 사용해야합니다.

내가 얼마나 많은 경기 .find를 사용하여 계산 제안 : 당신은 단지 직접적인 아이를보고 싶은 경우에, 물론

if (container.find("div").length > 0) { 

} 

을 사용 :

if (container.children("div").length > 0) { 

} 
+0

예. 다음과 같이 명시되어 있습니다. $ .contains() 메소드는 두 번째 인수에서 제공 한 DOM 요소가 첫 번째 인수에서 제공 한 DOM 요소의 하위 클래스 인 경우 true를 반환합니다. – Sefam

+0

그래서 나는 그것이 작동하지 않는 이유에 대해 심각하게 궁금해하고 있습니다. 또한 나는 $ .find()를 일찍 시도했다. 길이를 구체적으로 확인하는 것을 잊어 버렸습니다. 고마워요! – Sefam

+0

@Sefam 방금 도움이되는 설명으로 잘 편집했습니다. 문제는'$ .contains' 메쏘드가 어떤 인수를 받아들이는지입니다. – Ian

2

것은 당신이 할 수 있습니다 체인 :

if (container.has('div')) {...} 
+0

두 번째 매개 변수로 선택기를 전달할 수 없습니다. 두 매개 변수에 대한 DOM 요소 만 허용합니다. – Ian

+0

@lan -'.has'에 셀렉터를 넘겨 줄 수있는 것 같습니다 : http://jsfiddle.net/DerekL/j2tcL/ –

+1

@Derek 朕 會 功夫 - 주석은'$ .contains'라고 말하면서 제거했습니다. 실제로 이것을 사용하기에 적절한 방법이 아니기 때문에 제거했습니다. 'has()'가 적절한 방법입니다! – adeneo

관련 문제