JQuery каждый (), кажется, не работает в моем случае - PullRequest
0 голосов
/ 09 апреля 2011

У меня есть список пользователей / веб-сайтов, и у каждого из них есть баннер.Я хочу показать этот баннер с помощью всплывающей подсказки.

$(document).ready(function() {

     $(".test").each(function(i) {  

          var banner_url = $("input[name='banner_url']").val();

          var index = i + 1;
          $(this).tipTip({maxWidth: "auto", edgeOffset: 10, content: banner_url + index});
     });
});

Но на каждой подсказке всегда отображается один и тот же баннер
(index var просто для проверки each, и он работает, но banner_url нет)

Я также пытался поместить URL-адрес баннера перед .test each(), но с теми же результатами.Кто-нибудь знает, что случилось?Я уверен, что что-то упустил.

<div class="banner">
<input type="hidden" name="banner_url" value="{$banner_url}" />
<a href="{$url}" onclick="out('{$username}');" id="{$username}" class="test" title="">{$title}</a>
</div>

Пытался также поместить эти 2 в контейнер div, но, похоже, это не имеет значения

Я могу поместить код баннера в заголовокатрибут, но я хочу избежать жесткого кодирования img в тег заголовка.

Спасибо за любые советы, помогите.Себ

Ответы [ 2 ]

1 голос
/ 09 апреля 2011

Не видя весь HTML, я думаю, вы хотите, чтобы banner_url был внутри каждого контейнера .test, поэтому:

$(".test").each(function(i, element_with_class_test) {  
      var banner_url = $(element_with_class_test).find("input[name='banner_url']").val();
 ...
});

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

0 голосов
/ 09 апреля 2011

Я подозреваю, что проблема в том, что вы используете:

$("input[name='banner_url']")

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

В вашем html тег с url находится на том же уровне в DOM, что и ваш элемент, поэтому вам нужно использовать соответствующую функцию поиска jQuery, чтобы найти его.Это должно работать:

var banner_url = $(this).prevUntil("input[name='banner_url']").last().val();
...