в jQuery: значение.attr-это не функция
у меня это вырезано на моей странице:
$('#category_sorting_form_save').click(function(){
var elements = $("#category_sorting_elements > div");
$.each(elements, function(key, value) {
console.info(key," : ",value);
console.info("cat_id: ",value.attr('cat_id'));
});
});
и когда он выполняется, я получаю:
0 : <div class="dragable" cat_id="6" value="" style="opacity: 1;">
value.attr is not a function
console.info("cat_id: ",value.attr('cat_id'));
что я здесь делаю не так? Я пытаюсь получить значение элемента div. cat_id.
3 ответа:
содержимое этого объекта jQuery-это простые элементы DOM, которые не отвечают на методы jQuery (например,
.attr
). Вам нужно обернуть значение на$()
чтобы превратить его в объект jQuery, чтобы использовать его.console.info("cat_id: ", $(value).attr('cat_id'));
или просто используйте метод DOM напрямую
console.info("cat_id: ", value.getAttribute('cat_id'));
вы имеете дело с необработанным элементом DOM .. нужно обернуть его в объект jQuery
console.info("cat_id: ",$(value).attr('cat_id'));
второй параметр функции обратного вызова, переданной каждый() будет содержать фактический элемент DOM, а не объект оболочки jQuery. Вы можете позвонить в getAttribute () метод элемента:
$('#category_sorting_form_save').click(function() { var elements = $("#category_sorting_elements > div"); $.each(elements, function(key, value) { console.info(key, ": ", value); console.info("cat_id: ", value.getAttribute('cat_id')); }); });
или оберните элемент в объект jQuery самостоятельно:
$('#category_sorting_form_save').click(function() { var elements = $("#category_sorting_elements > div"); $.each(elements, function(key, value) { console.info(key, ": ", value); console.info("cat_id: ", $(value).attr('cat_id')); }); });
или просто использовать
$(this)
:$('#category_sorting_form_save').click(function() { var elements = $("#category_sorting_elements > div"); $.each(elements, function() { console.info("cat_id: ", $(this).attr('cat_id')); }); });