2011-04-09 48 views
0

我有一个用户/网站列表,每个用户都有一个横幅。我想通过工具提示显示该横幅。jquery each()似乎不适用于我的情况

$(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变种是只是为了测试each,和它的作品,但不banner_url

我也试图把banner url var .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成标题标签。

感谢您的任何提示,帮助。 勒布

+1

你可以请显示HTML结构以及?我假设容器有“test”类,而within是一个名为“banner_url”的单个输入? – 2011-04-09 14:39:17

+0

它现在在那里。有圆顶问题。 – Basti 2011-04-09 14:45:38

+0

我已经修复了它,为了移除代码标签 - 您应该用4个空格缩进代码,而不是使用代码标签。 – 2011-04-09 14:47:30

回答

1

没有看到整个HTML,我猜你希望每个容器。测试里面banner_url,所以:

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

否则你总是使用该名称搜索的第一输入,从文档根开始,当然会始终获得相同的值。

+0

啊,生病立即试试这个,谢谢 – Basti 2011-04-09 14:50:20

+2

我甚至会推荐使用'$(.test).each(function(i,e){var url = $(e).prev( 'input [name =“banner_url”]')...});'因为锚点不是容器,而是搜索的根。 – 2011-04-09 14:56:43

+0

同意,我还没有看到发布的代码示例。 – 2011-04-09 14:59:51

0

我怀疑问题是与您使用的:

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

jQuery的调用与选择器的作用范围是文件,没有它你每次拿起元素()。

在你的html中,带有url的标签和你的元素在DOM中处于同一层次,所以你需要使用合适的jQuery搜索功能来定位它。这应该工作:

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

因为它似乎只显示第二个.banner div的横幅。 (请参阅更新的html) – Basti 2011-04-09 15:00:45