JQuery - использовать .closest с document.getElementById ()

0

Привет, ребята, у меня есть следующий jQuery:

var $this   = $(this);
$this.closest('ul').find('li').removeClass('selected');

и я пытаюсь сделать то же самое с элементом с похожим идентификатором, установив переменную:

var liID = $this.closest('li').attr('id');
var liID = liID.substring(0, liID.length - 1);

и затем пытается вызвать .closest('ul').find('li').removeClass('selected'); в теме. Я пробовал это:

document.getElementById(liID).closest('ul').find('li').removeClass('selected');

и это:

liID.closest('ul').find('li').removeClass('selected');

Я не удивлен, что второй не работает, но я не могу понять, как сделать первую работу. Какие-либо предложения?

Теги:
getelementbyid
closest

3 ответа

1
Лучший ответ

Поскольку у вас есть идентификатор, прямо используйте

$("#" + liID).closest('ul').find('li').removeClass('selected');

document.getElementById(liID) вернет элемент DOM. Чтобы использовать метод jQuery, вы должны преобразовать его в объект jQuery. Вы можете попробовать

$(document.getElementById(liID)).closest('ul').find('li').removeClass('selected');
  • 0
    Второй работает, но первый намного чище. Я награжу вас ответом, когда срок истечет.
1

document.getElementById(liID) возвращает ссылку на элемент dom, которая не имеет связанных с jQuery методов, поэтому вам нужно получить объект jQuery для этого элемента для использования методов jQuery.

Вы можете использовать id-селектор для получения целевого элемента, а затем использовать closest()

$('#'+liID).closest('ul').find('li').removeClass('selected');
1

document.getElementByID() возвращает элемент DOM.

Чтобы использовать шкаф, вам нужен объект jquery, поэтому wrap document.getElementByID() с $, чтобы сделать его объектом jquery.

Это будет работать

Ещё вопросы

Сообщество Overcoder
Наверх
Меню