#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=»» по-прежнему возвращает положительный результат, тогда как я хочу, чтобы он имел другой эффект. Когда я реализовал это, я включил эффект наведения на оба элемента