jQuery hasClass соответствующий элемент - PullRequest
4 голосов
/ 08 февраля 2010

В jquery я могу объединить "closest" или Parents () с "hasClass", поэтому он даст мне ближайший элемент с данным классом, если он существует на странице?

var matchingDiv = $(this).closest('div').hasClass('SomeClass')

if ( matchingDiv != null )
{
   //we found matching element now manipulate it

}

У меня всегда будет либо один соответствующий элемент div, либо ни одного. Спасибо.

Ответы [ 7 ]

5 голосов
/ 08 февраля 2010
var matchingDiv = $(this).closest('div.SomeClass')

if ( matchingDiv.length )
{
   // use length to find if there was a match.
   // closest() will always return an object.
}

Если это не сработает, возможно, опубликуйте html. Может быть, там есть проблема?

1 голос
/ 28 марта 2012

Если вам нужно проверить, может ли текущий элемент быть предком, которого вы ищете. Вы можете использовать комбинацию is() и closest() следующим образом:

var matchingDiv = $(this).closest('.SomeClass');

matchingDiv = matchingDiv.length == 0 ? (matchingDiv.is('.SomeClass') ? matchingDiv : null) : matchingDiv

if ( matchingDiv != null )
{
   //found matching element 

}
1 голос
/ 08 февраля 2010

Ближайший принимает селектор, чтобы вы могли сделать это:

 var matchingDiv = $(this).closest('div.SomeClass')

Ваша следующая строка - проблема, вы должны проверить результат jQuery следующим образом:

if ( matchingDiv.length )
{
    //we found matching element now manipulate it
}
1 голос
/ 08 февраля 2010

попробуйте это, ближайший берет селектор:

var matchingDiv = $(this).closest('div.SomeClass')

if ( matchingDiv != null )
{
   //we found matching element now manipulate it

}
0 голосов
/ 08 февраля 2010

Разница между closest () и parent () заключается в том, что parent () может дать вам более одного элемента, если ваш селектор соответствует более одного. (для чего это стоит здесь)

0 голосов
/ 08 февраля 2010

документ для ближайшего

var matchingDiv = &(this).closest('.SomeClass')

if ( matchingDiv != null )
{
   //we found matching element now manipulate it

}
0 голосов
/ 08 февраля 2010

Вы спрашиваете, будет ли это работать или нет?

Я бы сказал, что так и есть, потому что парадигма jQuery основана на объединении функций jQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...