Подтвердить что ты не робот

JQuery с использованием 'this' в выражении if

Я использую оператор if, чтобы определить, есть ли у элемента какие-либо дочерние элементы. Если у него НЕ есть детей, я хочу сделать что-то только для этого элемента.

Здесь предпосылка того, что я пытаюсь сделать:

if ($("#div a").children().length > 0){
    $(this).hide();
}

Итак, если тег <a> не имеет дочерних элементов, я хочу что-то сделать с этим конкретным элементом (или несколькими элементами, у которых также нет детей).

Проблема заключается в том, что this не определен, потому что это оператор if.

Я мог бы полностью упустить что-то, но я не совсем уверен, как это сделать. Любые советы будут оценены

4b9b3361

Ответ 1

Изменить: Добавлено DEMO Ссылка

Вы можете использовать .filter для проверки состояния и вызова .hide результатов фильтрации. См. Ниже,

$("#div a").filter(function () {
  return ($(this).children().length > 0)
}).hide();

Ответ 2

вы можете использовать каждый для итерации через элементы

$('input').each(function(){
  if ($(this).val()) {
    $(this).addClass('has-value');
  }
});

Ответ 3

Простое решение состоит в том, чтобы поместить элемент в переменную.

var elem = $("#div a");
if (elem.children().length > 0){
    elem.hide();
}