/ / JQuery $ .contains метод винаги връщане на фалшиви - javascript, jquery

JQuery $ .contains метод винаги връща false - javascript, jquery

Имам проблем с тази част от кода на JQuery:

$(".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;
} });

Опитвам се да изпусна елемент в елемента li,и искам да проверя дали съдържа елемент div. Проблемът е, че самата функция винаги връща false и никога не влиза в "return false;", дори ако li съдържа елемент div, като този:

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

Как да отстраня този проблем?

Отговори:

3 за отговор № 1

Методът на полезност $.contains не работи както очаквате.

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

Параметрите, които са необходими, са: container и containedи го използвате като:

$.contains(container, contained)

И двата параметъра са DOM елементи ... не jQuery обекти или селектори.

Така че във вашия случай, тъй като не търсите конкретен елемент, съдържащ се в друг специфичен елемент, не можете да го използвате $.contains - трябва да използвате друг метод.

Бих предложил да се използва .find и преброяване на броя на съответствията:

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

}

Разбира се, ако искате само да гледате непосредствените деца, използвайте:

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

}

2 за отговор № 2

Когато се свързвате, ще го направите:

if ( container.has("div") ) {...}