Ошибка ссылки: $$ не определена ошибка jQuery?

#javascript #html

#javascript #HTML

Вопрос:

Вот простой пример группы divs, которые могут быть отсортированы либо по их HTML-содержимому, либо по значениям пользовательских атрибутов:

Сортировка в алфавитном порядке по содержимому HTML

Сортировка от низкого к высокому по значению атрибута «sortweight» HTML:

Я попробовал следующий код и получил ошибку

Ошибка ссылки: $$ не определен

HTML

 <div id="sortexample">
    <div class="sortitem" sortweight="5">Pears [sortweight: 5]</div>
    <div class="sortitem" sortweight="3">Apples [sortweight: 3]</div>
    <div class="sortitem" sortweight="1">Cherries [sortweight: 1]</div>
    <div class="sortitem" sortweight="4">Oranges [sortweight: 4]</div>
    <div class="sortitem" sortweight="2">Strawberries [sortweight: 2]</div>
</div>
        

            
 

JavaScript:

 // sort all divs with classname 'sortitem' by html content
function sort_div_content() {
    // copy all divs into array and destroy them in the page
    divsbucket = new Array();
    divslist = $('div.sortitem');
    for (a=0;a<divslist.length;a  ) {
        divsbucket[a] = divslist[a].dispose();
    }

    // sort array by HTML content of divs
    divsbucket.sort(function(a, b) {
        if (a.innerHTML.toLowerCase() === b.innerHTML.toLowerCase()) {
            return 0;
        }
        if (a.innerHTML.toLowerCase() > b.innerHTML.toLowerCase()) {
            return 1;
        } else {
            return -1;
        }
    });

    // re-inject sorted divs into page
    for (a=0;a<divslist.length;a  ) {
        divsbucket[a].inject($('sortexample'));
    }
}

// sort by attributes - usage for our example: sort_div_attribute('sortweight');
function sort_div_attribute(attname) {
    // copy all divs into array and destroy them in the page
    divsbucket = new Array();
    divslist = $('div.sortitem');
    for (a=0;a<divslist.length;a  ) {
        divsbucket[a] = new Array();
        // we'vev passed in the name of the attribute to sort by
        divsbucket[a][0] = divslist[a].get(attname);
        divsbucket[a][1] = divslist[a].dispose();
    }

    // sort array by sort attribute content
    divsbucket.sort(function(a, b) {
        if (a[0].toLowerCase() === b[0].toLowerCase()) {
            return 0;
        }
        if (a[0].toLowerCase() > b[0].toLowerCase()) {
            return 1;
        } else {
            return -1;
        }
    });

    // re-inject sorted divs into page
    for (a=0;a<divslist.length;a  ) {
        divsbucket[a][1].inject($('sortexample'));
    }
}
 

Я не знаю, почему я получил эту ошибку

Комментарии:

1. Нет такого div атрибута с именем «sortweight» (попробуйте «data-sortweight»), и вы намеревались использовать функцию jQuery $() (а не $$() функцию)?

2. В сторону: вы должны объявлять область действия ваших переменных, используя var , let , или const как, например, for(let a=0; или const divbucket = new Array(); .

3. @terrymorse Да, но я получил еще одну ошибку ‘Uncaught TypeError: divslist[a].dispose не является функцией в sort_div_content’

4. Я не думаю, что вызывается метод jQuery .dispose() . Если вы хотите удалить элемент из DOM, попробуйте использовать .remove() .

Ответ №1:

В пятой строке написано divslist = $$('div.sortitem'); , но $$ не определен. Вы должны использовать $ вместо $ $.

divslist = $('div.sortitem'); Это было бы лучше

Комментарии:

1. Да, но я получил другую ошибку ‘Uncaught TypeError: divslist[a].dispose не является функцией в sort_div_content’

2. Если вы пытаетесь удалить элементы из DOM, вам следует использовать divslist [a].удалить вместо divslist [a].удалить