jQuery Если у div есть привязанный потомок, то

Возникли проблемы с простым. Мой утренний чай недостаточно крепок.

ЕСЛИ у div есть ребенок, якорь ТОГДА. Не хочу добавлять дополнительный класс в.box

Что-то вроде:

$('.box').click(function(){
    if ($(this).children('a')) {
        //some thing
    } else {
        //some thing else
    }
});

<div class="box"><a href="#"><img src="#" /></a></div>
<div class="box"><img src="#" /></div>
<div class="box"><img src="#" /></div>

3 ответа

Решение

Проверить length имущество:

$('.box').click(function(){
    if ($(this).children('a').length) {
        //some thing
    } else {
        //some thing else
    }
});

Так как children Метод (как и большинство методов jQuery) возвращает экземпляр jQuery, он всегда оценивается как true (так что вы всегда будете в if ветка). length свойство возвращает число, которое будет оцениваться как false если это 0,

Ты можешь использовать .find() искать селектор для дополнительных селекторов: http://jsfiddle.net/Nf3QH/ надеюсь, это поможет!

В настоящее время нет необходимости в jQuery, вам просто нужно добавить немного ванильного JavaScript, обратите внимание, что код довольно короткий.

  cells = document.querySelectorAll('div');
          [].forEach.call(cells, function (el) {
          //console.log(el.nodeName)
            if (el.hasChildNodes() && el.firstChild.nodeName=="A") {
            console.log(el)};
        });
<div class="box"><a href="#"><img src="#" /></a></div>
<div class="box"><img src="#" /></div>
<div class="box"><img src="#" /></div>

Другие вопросы по тегам