jquery atrr ("href") не соответствует .. в sharepoint - PullRequest
0 голосов
/ 17 июня 2010

У меня есть функция jquery (это не написано мной в любом случае, я все еще учусь). Мы заменяем URL-адреса с помощью f.attr ("href") в нескольких местах. Я не понимаю, откуда это значение href будет связано. И почему значение (f.attr ("href")) меняется с места на место. Я имею в виду, что он имеет какое-то значение в одном месте, и если я даю то же самое, это дает мне другое значение в другом месте.

В статье я читал, что метод .attr () получает значение атрибута только для первого элемента в сопоставленном наборе. Что такое согласованный набор означает

2

Позвольте мне изменить мой вопрос следующим образом: Могу ли я добавить строку запроса в функцию Jquery? Я хочу добавить еще два элемента строки запроса с веб-страницы, чтобы получить полный URL. Если мы можем .. Как мы можем это сделать?


.replace ("$ {my_email}", "mailto: my@u.com? Subject = Thanku & body = Jquery работает.% 0A% 0a http://www.my.site.com/_layouts/products/New.aspx?url=" + f.attr (" href ")) В этом f.attr ("href") дает мне другое значение, чем другие, где мы использовали .. В основном это дает мне только половину ссылки ..

Есть ли что-то, что вам нужно, я могу предоставить вам Спасибо

Ответы [ 3 ]

2 голосов
/ 17 июня 2010

Совпадающий набор равен нулю, и больше элементов, которые являются результатом начального запроса, например, $('.foo') вернет набор со всеми элементами, для которых определен класс foo .Когда вы вызываете .attr('href') для этого набора, он будет возвращать атрибут только для первого элемента в наборе, если он есть, поскольку возвращение всех атрибутов в массиве или объединениях - это не то, что обычно хотят большинство людей.

Если вам действительно нужны все атрибуты, вы можете сделать следующее:

var array_of_hrefs = $('.foo').each(function(){
  return $(this).attr('href')
}).get();
2 голосов
/ 17 июня 2010

Когда вы используете селектор в вызове 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 в разных местах.Конечно, значения могут также меняться именно потому, что вы их устанавливаете, но я надеюсь, что вы бы поняли, если бы это произошло.

2 голосов
/ 17 июня 2010

Если у вас есть несколько тегов привязки на странице, у вас есть шанс выбрать более одного из них.

<a href="#">Missed</a>
<div>
    <a href="#">Anchor</a>
    <a href="#">Anchor</a>
    <a href="#">Anchor</a>
    <a href="#">Anchor</a>
    <span><a href="#">Missed</a></span>
</div>

Если вы сделали $('div > a') в качестве селектора jQuery, вы бы сопоставили (в этом примере) все теги привязки, содержимое которых равно "Anchor"; потому что этот селектор соответствует только тегам привязки, которые являются потомками divs.

Чтобы узнать, сколько элементов соответствует вашему набору, позвоните по номеру alert(f.length);

Если вы можете предоставить код, который определяет f, или увидеть какой-то HTML-код на своей странице, мы сможем помочь вам более конкретно!

Если вы установите значение, используя f.attr (), все соответствующие элементы будут обновлены. Если вы получите значение с помощью f.attr (), будет возвращено только значение для первого элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...