Проверка на наличие пустого атрибута jquery

#javascript #jquery #attributes

#javascript #jquery #атрибуты

Вопрос:

Я пытаюсь проверить элемент на наличие пустого атрибута, но, похоже, не получается заставить что-то работать.

Вот мой html-код:

     <div class="item">
        <div class="itemBtn" style="visibility:hidden;">
        </div>
        <div class="itemText" itemtype="loader">
        </div>
    </div>  
    <div class="item">
        <div class="itemBtn">
        </div>
        <div class="itemText" itemtype="">
        </div>
    </div>
 

Вот функция наведения курсора jquery, которая, по сути, просто включает кнопку. Я пытался развить это, сказав: «если нет itemtype, не включайте его»

     inner.find(".item").hover(function () {
        if (inner.find(".item-text[itemtype='']")) {
            $(this).children(".itemBtn").css("visibility", "hidden");
        } else {
            $(this).children(".itemBtn").css("visibility", "visible");
        }
     }, function () {
        $(this).children(".itemBtn").css("visibility", "hidden");
     });
 

Обновить:
В итоге я решил это, выполнив следующее:

     inner.find(".item").hover(function () {
         if ($(this).find("div[itemtype='']").length) {
           $(this).children(".itemBtn").css("visibility", "hidden");
         } else {
           $(this).children(".itemBtn").css("visibility", "visible");
         }
         }, function () {
           $(this).children(".itemBtn").css("visibility", "hidden");
         });
 

Комментарии:

1. И? Что происходит при запуске кода?

2. Вы должны использовать .attr() и проверить его условно.

Ответ №1:

это просто простой пример

 var attr = $(this).attr('title');
if (typeof attr !== typeof undefined amp;amp; attr !== false) {
    //do some thing
}
 

Комментарии:

1. Моя единственная проблема в том, что (это) является родительским, мне нужно проверить дочерний элемент. Используя ваш пример, я бы подумал сделать: var attr = $(this).children().attr(‘title’); Но это не работает

2. или просто используйте $(«#child_id»), если вы можете использовать id с дочерним элементом

3. другое решение var attr = $(this).find("child_selector").attr('title');

4. что я хочу сказать, что с помощью jquery вы можете сделать что-то более чем 1 способом, просто выполнив поиск

Ответ №2:

Используйте .attr подобное с условным:

 var attr = $(this).attr('title');
if (!attr) {
    // Do something
}
 

Или вы можете сделать его более кратким, проверив атрибут в условном выражении следующим образом:

 if (!$(this).attr('title')) {
    // Do something
}
 

Ответ №3:

 if (! $('.item-text').attr('itemtype') ) {
    alert("Nothing in itemtype");
} else {
    alert("Not empty");
}
 

Ответ №4:

Очень просто, просто проверьте, существует ли атрибут или нет, используя attr(), например:

 if (!$(this).attr('title')) {
    alert('Exists!');
}
 

Комментарии:

1. Кажется, когда я использую этот метод, он говорит, что itemtype=»» по-прежнему возвращает положительный результат, тогда как я хочу, чтобы он имел другой эффект. Когда я реализовал это, я включил эффект наведения на оба элемента