Имам проблем с тази част от кода на 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") ) {...}