2011-04-09 127 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