#jquery #jquery-selectors #if-statement
#jquery #jquery-селекторы #if-оператор
Вопрос:
Я хочу запустить «действие один», когда привязка моих переменных содержит слово «изображение». Если он не содержит указанного текста, иначе он выполнит действие два.
var clickedImage = $('.header ul li').find('img[rel="clicked"]').closest('li');
if ($(clickedImage).find('a:contains("image")')) {
//action one
} else {
//action two
}
Где я здесь ошибаюсь?
Комментарии:
1. что такое
clickedImage
? здесь нам нужно больше контекста…2. Создал скрипку, и она работает у меня (safari 5): смотрите здесь . Если HTML не соответствует вашему, пожалуйста, разветвляйте и предоставляйте свою скрипку.
Ответ №1:
Проверьте длину коллекции:
if ($(clickedImage).find('a:contains("image")').length ) {
.find()
возвращает объект jQuery. Чтобы проверить, соответствует ли селектор чему-либо, проверьте, не равно ли length
свойство нулю.
Комментарии:
1. Я понимаю вашу логику, но это не совсем работает. Я уверен, что то, что я делаю, неправильно.
var count = $(clickedImage).find("a").find('href:contains("Walk")').length;
ЗАТЕМif ($(count).length != 0) {
2.
.find()
принимает строку (селектор) в качестве аргумента. Опустите оболочку jQuery:var clickedImage = $('.header ul li').find('img[rel="clicked"]').closest('li')
.3. хорошо, эта часть была ошибкой, поэтому ее не должно было быть, но
:contains
часть все еще не работает. Спасибо за вашу помощь до сих пор!4. Кроме того, вы, вероятно, ищете не
<href>
тег, а атрибут. Используйте селектор атрибутов:var count = $(clickedImage).find("a[href*="Walk"]').length
5. да, я пошел по другому маршруту, который не требовал наличия указанного текста. Это сайт, на котором я это сделал, если вы хотите ознакомиться с файлом .js. chantalgillingham.co.uk