JQuery, если видимый
<div id="chatCenterMembers">
<div class="chatmember">
<a title="Blah Blah Blah">
<div class="newchatmessage" style="display: block;"></div>
Как я могу захватить видимый div в инструкции if?
У меня $(this)
установлено значение <div class="chatmember">
- вторая строка сверху.
Я работал с ниже, но до сих пор удался.
if($(this+' a div.newchatmessage').filter(":visible")) {
Выше просто выпадает...
Я также пробовал ниже, и он не работает.
if ($(this + 'a div.newchatmessage').is(':visible')) {
Ответы
Ответ 1
.is()
за любую подробную информацию об этом методе, просто прокрутите немного вниз... там куча примеров!
изменить (спасибо за подсказку @Wesley Murch):
если это не работает, ваш селектор может быть неправильным... $(this+' a div.newchatmessage')
выглядит довольно странно... скорее всего, это будет $('a div.newchatmessage', this)
или $('a div.newchatmessage', $(this))
в зависимости от this
, являющегося переменной jQuery или не
Ответ 2
Используйте .is()
, чтобы проверить, выполняет ли элемент определенное требование, например:
if ($(this).find('a div.newchatmessage').is(':visible'))
Или, если вы хотите, чтобы это было более читаемым:
var element = $(this).find('a div.newchatmessage');
if (element.is(':visible')) {
// Do your thing
}
Ответ 3
Я столкнулся с подобной ситуацией и хотел заметить, что вы должны быть осторожны с селектором jquery, возвращающим более одного элемента. Я считаю, что проверка .is(': visible') будет оценивать только первый элемент в массиве. Вы можете проверить, видимы ли все элементы, возвращаемые этим селектором, с чем-то вроде этого.
if($('.someElementWithThisClass:visible').length > 0){
//Do it to it
}