jQuery: value.attr не є функцією


80

Я це вирізав на своїй сторінці:

$('#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.

Відповіді:


152

Зміст цього об’єкта jQuery є простими елементами DOM, який не реагує на методи jQuery (наприклад .attr). Вам потрібно обернути значення, $()щоб перетворити його в об'єкт jQuery, щоб використовувати його.

    console.info("cat_id: ", $(value).attr('cat_id'));

або просто використовувати метод DOM безпосередньо

    console.info("cat_id: ", value.getAttribute('cat_id'));

7

Ви маєте справу з необробленим елементом DOM .. потрібно обернути його в об’єкт jquery

console.info("cat_id: ",$(value).attr('cat_id'));

3

Другий параметр функції зворотного виклику, що передається кожному () , міститиме фактичний елемент 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'));
    });
});

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.