#jquery
#jquery
Вопрос:
Я чувствую, что это будет очень любительская ошибка, которую я совершаю с этим, но после целого дня выдергивания того, что у меня осталось, вот так:
Мне нужно иметь возможность проверить, существует ли div на странице, которая содержит в качестве идентификатора строку переменную, которая генерируется при наведении курсора мыши на другой div.
Например:
У меня есть DIV на моей боковой панели навигации, которая содержит слова «Google» через интервал.
Когда пользователь наводит курсор мыши на этот div, я создаю переменную, содержащую текст из диапазона, давайте назовем эту переменную sideBarButtonName .
Затем я хотел бы выполнить поиск в DOM для любых divs, идентификатор которых содержит слово «nav_» sideBarButtonName, и если такой div существует, выдайте предупреждение.wb Если этого не существует, у меня есть оператор else, который работает просто отлично.
Я не могу понять это правильно! Помогите!
Часть, с которой я борюсь, — это счетчик, который проверяет, есть ли
$("div[id*='nav_']") (sideBarButtonName).length > 0
Я создал скрипку, которая повторяет проблему, с которой я столкнулся.
Спасибо!
Ответ №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 минут назад.