Изменить текст массива ссылок в jQuery

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

На веб-сайте моей школы на домашней странице есть выпадающий список курсов, на которые вы в настоящее время зарегистрированы. Однако, если вы видите это, он загроможден буквами, которые многие люди, возможно, не захотят видеть.

Я уже знаю, как я собираюсь это сделать. Я собираюсь использовать jQuery для выбора каждого элемента списка:

 var links = $(".d2l-datalist li .d2l-course-selector-item .d2l-left .vui-link");
  

Это возвращает массив <a> элементов в текстовой форме.

Используя links.text("Boo!"); , я могу установить для текста всех из них значение «Boo!», Но я хочу изменить каждый из них по отдельности, используя цикл for / in для итерации по каждому <a> и изменения текста в зависимости от значения href .

Однако всякий раз, когда я делаю это, поскольку элементы в массиве являются строками, я ничего не могу с ними сделать с помощью jQuery.

Любая помощь в этом приветствуется 🙂

Вот мой код на данный момент (выполняется $.getScript() из букмарклета JS):

 var links = $(".d2l-datalist li .d2l-course-selector-item .d2l-left .vui-link");
//links.text("Boo!");

var count = 1;
for (var link in links) {
    link.text("Boo #"   count);
    count  = 1;
}
  

Соответствующая разметка: http://hastebin.com/ulijefiqaz.scala

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

1. включить весь соответствующий код в OP

2. Две вещи — соответствующая разметка также была бы полезна. Также: for...in циклы действительно должны использоваться только для перебора ключей в объекте. Если вы выполняете итерацию по массиву, вы действительно должны использовать стандартный for цикл. Кроме того, поскольку это массив, вы также можете просто использовать forEach

3. @anied Я привык использовать циклы for / in на python, так что мне это не приходило в голову. Каковы были бы преимущества использования forEach вместо for / in? Также я добавил ссылку hastebin в соответствующую разметку.

4. @RedXTech — forEach — это синтаксис, который предпочитают некоторые люди, поскольку он позволяет вам использовать функцию (хотя это сложно / невозможно break; . Но что более важно, вы не должны использовать for...in циклы для перебора массива — это может привести к проблемным результатам

5. @anied ах, хорошо, спасибо 🙂

Ответ №1:

Вы можете использовать .each функцию итератора jQuery.

 var links = $(".d2l-datalist li .d2l-course-selector-item .d2l-left .vui-link");

var count = 1;

links.each(function() {
    $(this).text("Boo #"   count  );
});
  

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

1. Основные тесты работали до сих пор, будут приняты, как только я протестирую основные функции 🙂