Проверьте, имеет ли div идентификатор, содержащий строку плюс переменную

#jquery

#jquery

Вопрос:

Я чувствую, что это будет очень любительская ошибка, которую я совершаю с этим, но после целого дня выдергивания того, что у меня осталось, вот так:

Мне нужно иметь возможность проверить, существует ли div на странице, которая содержит в качестве идентификатора строку переменную, которая генерируется при наведении курсора мыши на другой div.

Например:

У меня есть DIV на моей боковой панели навигации, которая содержит слова «Google» через интервал.

Когда пользователь наводит курсор мыши на этот div, я создаю переменную, содержащую текст из диапазона, давайте назовем эту переменную sideBarButtonName .

Затем я хотел бы выполнить поиск в DOM для любых divs, идентификатор которых содержит слово «nav_» sideBarButtonName, и если такой div существует, выдайте предупреждение.wb Если этого не существует, у меня есть оператор else, который работает просто отлично.

Я не могу понять это правильно! Помогите!

Часть, с которой я борюсь, — это счетчик, который проверяет, есть ли

  $("div[id*='nav_']")   (sideBarButtonName).length > 0
  

Я создал скрипку, которая повторяет проблему, с которой я столкнулся.

http://jsfiddle.net/Pu5FJ/1/

Спасибо!

Ответ №1:

Вам нужно поместить sideBarButtonName внутрь селектора. Поскольку ваш идентификатор точно соответствует, вы можете настроить таргетинг на него напрямую:

 $('#nav_'   sideBarButtonName).length
  

Вот скрипка

Ответ №2:

Из вашей скрипки кажется, что «содержит» действительно означает равно, поэтому:

 if ($('#nav_'   sideBarButtonName).length) {
    // alert here
}
  

ДЕМОНСТРАЦИЯ

Однако, видя вашу структуру HTML, вы можете захотеть немного улучшить ее:

 <div class="sideBarButton" data-url="http://www.google.com">
    <div id="nav_Google" class="side-nav">
    </div>
    <span>Google</span>
</div>
  

Затем вы проверяете, существует ли элемент с классом «side-nav» внутри:

 $('.sideBarButton').mouseenter(function() {
    if ($(this).find('.side-nav').length) {
        // alert here
    }
});
  

Ответ №3:

  $("div[id='nav_"   sideBarButtonName   "']").length > 0) {
  

или

 $("div #nav_"   sideBarButtonName   "").length > 0)
  

ДЕМОНСТРАЦИЯ

Комментарии:

1. @Anshu проверьте ответ, приятель, его не нужно использовать *

2. Нет необходимости отклонять правильный ответ, оба ответа были даны 8 минут назад.