Attr is not a function

Attr is not a function

I have this snipped in my page:

And when it is executed, I get:

What am I doing wrong here? I am trying to get the value of the div.cat_id element.

3 Answers 3

Contents of that jQuery object are plain DOM elements, which doesn’t respond to jQuery methods (e.g. .attr ). You need to wrap the value by $() to turn it into a jQuery object to use it.

or just use the DOM method directly

You are dealing with the raw DOM element .. need to wrap it in a jquery object

The second parameter of the callback function passed to each() will contain the actual DOM element and not a jQuery wrapper object. You can call the getAttribute() method of the element:

Or wrap the element in a jQuery object yourself:

Or simply use $(this) :


Hot Network Questions

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2020 Stack Exchange Inc; user contributions licensed under cc by-sa 4.0 with attribution required. rev 2020.1.10.35756

Обращаясь к jQuery-коллекции по индексу, вы получаете DOM-узел. Соответственно, надо либо так:

$(selectror) — вы получаете jQuery объект с DOM-элементами, которые соответствуют селектору

[0] — обращаетесь к первому из этих элементов. БЕЗ обертки jQuery

.attr — пытаетесь вызвать метод из jQuery на обычном DOM-элементе.

Внутри each() каждый elem — ссылка на натуральный DOM-элемент.

Так что либо так

А вот ещё несколько приёмов

Нужно помнить, что data() в jQuery — не совсем то же самое, что и data-атрибуты. Это — метод у jQuery-объекта, позволяющий хранить любой тип данных. Значение атрибута — лишь стартовое значение, преобразованное, по возможности, в наиболее подходящий тип (например, попробуйте задать в качестве значения атрибута массив).

Ссылка на основную публикацию
Adblock detector