Когда вы используете селектор в вызове jQuery, он может соответствовать более чем одному элементу.Результаты возвращаются в виде объекта jQuery, который может содержать коллекцию (массив) совпадающих объектов.Некоторые методы, например attr
, работают только с первым элементом в коллекции.
Например,
$('a')
будет соответствовать всем тегам привязки в вашем документе.
Теперь каждый из них будет (может) иметь атрибут href
, но если вы примените функцию attr
к результатам этого селектора, он будет работать только с первым элементом в коллекции.Если у меня есть следующий HTML.
<a href='#0'>Zero</a>
<a href='#1'>One</a>
и я использую
var href = $('a').attr('href');
, тогда переменная href
будет иметь значение #0
, несмотря на то, что селектор соответствует обоимякоря.
Делая это несколько более запутанным, так это то, что обычно версия метода, который присваивает значения, а не считывает значения, будет работать со всеми элементами в коллекции.Например,
$('a').attr('title','foo');
назначит foo
атрибуту title обоих якорей в коллекции.Важно понимать различия в способах работы различных методов.См. jQuery API для получения более подробной информации о конкретных методах.
В вашем случае, я подозреваю, что f
- это переменная, которая соответствует различным селекторам в разных местах кода (f
является паршивым именем переменной, кстати, его более подробное объяснение, вероятно, поможет понять, что делает код).Это объясняет, почему он имеет разные значения атрибута href
в разных местах.Конечно, значения могут также меняться именно потому, что вы их устанавливаете, но я надеюсь, что вы бы поняли, если бы это произошло.