JQuery сбивает с толку код - PullRequest
       43

JQuery сбивает с толку код

2 голосов
/ 25 сентября 2011

Я изучаю Jquery и Javascript из веб-примеров. У меня есть хорошие рабочие знания, но некоторый код все еще сбивает меня с толку. Следующий код используется для корзины покупок, чтобы скрыть кнопку извлечения и заменить ее на div, отображающий сообщение о минимальных требованиях к корзине. Хотя часть кода меня отталкивает.

function getCollectionCount() {
  var totalCollectionCount = 0;    
  var collection = $('td[alt*="Collection"]');
  for (var i = 0; i < collection.length; i++) {
    var curVal = $(collection[i]).find("select").val();
    if (curVal != undefined){
      totalCollectionCount += parseInt(curVal);
    }
  }

Что означает эта часть?

var collection = $('td[alt*="Collection"]');

Ответы [ 4 ]

7 голосов
/ 25 сентября 2011

td[alt*="Collection"] выбирает все <td> элементы, чей атрибут alt содержит Collection, например:

<td alt="Collection"></td>
<td alt="CollectionFoo"></td>
<td alt="BarCollection12324343"></td>

, но не

<td></td>
<td alt=""></td>
<td alt="Foo"></td>

Примечание.: это довольно простой вопрос, на который можно легко ответить, прочитав документацию jQuery API селекторов :

Пожалуйста, попробуйте исследовать, прежде чем спросить!

1 голос
/ 25 сентября 2011

Этот код можно переписать более просто и кратко следующим образом:

function getCollectionCount() {
    var totalCollectionCount = 0;    
    $('td[alt*="Collection"] select').each(function() {
        var val = this.value || "0";
        totalCollectionCount += parseInt(val, 10);
    });
    return(totalCollectionCount);
}

И вот как это работает:

  1. Инициализируйте totalCollectionCount равным 0
  2. Найти все элементы td, которые имеют строку «Collection» в атрибуте alt, а затем найти элементы select в этом td
  3. Перебрать все найденные элементы, соответствующие указанному выше условию
  4. Инициализировать локальную переменнуюсо значением объекта select или «0», если значение отсутствует или оно пустое
  5. Превратите это значение в число (необходимо передать основание для parseInt, чтобы он не угадывался) и добавить его впромежуточный итог на данный момент.
  6. возвращает общее количество, которое мы нашли.
1 голос
/ 25 сентября 2011

Этот код возвращает каждый элемент td, чей атрибут «alt» содержит «Collection».

http://api.jquery.com/attribute-contains-selector/

jQuery полон этих классных ярлыков, которые учатся вечно, поэтому я всегдавсегда держите на рабочем столе копию jQuery в действии :)

1 голос
/ 25 сентября 2011

Это предложение селектора атрибута jQuery.Он выбирает любой элемент td, у которого есть atrtibute с именем alt, строка которого содержит значение Collection.

Содержит селектор: http://api.jquery.com/attribute-contains-selector/

jQuery имеет ряд полезных селекторов атрибутов.Вот главная справочная страница для них.Очень стоит прочитать, если вы только начинаете работать с jQuery

...