Jquery: содержит селектор

#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