Если у div нет содержимого div с определенным классом, сделайте что-нибудь.JQuery - PullRequest
2 голосов
/ 06 января 2012

Если #box не имеет содержащего div с классом current-map, тогда сделайте что-нибудь.

Я думал, что ! сработает, но это не так.

if (!$('#box').closest('.current-map')) {

     //do something

}

Ответы [ 3 ]

4 голосов
/ 06 января 2012

Вы можете проверить длину полученного выделения.Если это 0, элемент-предок .current-map отсутствует:

if($("#box").closest(".current-map").length) {
    //.current-map is an ancestor
}

Ваша попытка не работает, потому что большинство методов jQuery будут возвращать экземпляр jQuery, независимо от того, содержит ли он элементы DOM или нет, и этовсегда будет оценивать до true.

1 голос
/ 06 января 2012

Вместо этого следует использовать селектор :has().Переверните логику.

if ( $('.current-map:has(#box)').length > 0 ) {
    // do backflips
}

.closest() довольно печально известна своей медлительностью в работе.

0 голосов
/ 06 января 2012

Попробуйте .length в вашем блоке if

   if ($('#box').closest('.current-map').length > 0) {
      //do something
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...