x.id
работает, когда x
является элементом DOM, а не когда x
является объектом jQuery.
Если x
является объектом jQuery, вы можете сделать:
x[0].id
чтобы получить первый элемент DOM из объекта jQuery или вы можете использовать:
x.attr('id')
для использования метода jQuery для получения атрибута.
Что касается вашего другого вопроса, лучший способ заменить это:
$(this).parent().parent().parent().parent()
- поместить класс в нужного родителя и использовать это:
$(this).closest(".target")
Метод .closest(selector)
найдет ближайшего родителя, соответствующего селектору. Использование класса для решения этой проблемы облегчает проектирование, поскольку вам не нужно использовать уникальные идентификаторы.