我正在構建一個匹配元素的插件,在它內部找到一個鏈接並使父元素在點擊後進入該位置。將一個jQuery點擊事件綁定到foreach循環中的每個元素
我在主體的循環:
return this.each(function(options)
{
$to_link = $(this); //matched object
link_href = $('a', $to_link).attr('href'); //link location
$($to_link,$parent)
.click(function(){alert(link_href); window.location = link_href; return false;})
.attr('title','Jump to ' + link_href);
})
這我運行它反對這個HTML
<div id="a"><h2><a href="/products/">Products</a></h2><p>blah blah</p></div>
<div id="b"><h2><a href="/thinking/">Thinking</a></h2><p>liuhads</p></div>
我的問題是,點擊功能總是導致跳到儘管元素的標題具有正確的值,但最後一個匹配的div鏈接的值。
爲了澄清,品行應該是:
DIV#一個有一個標題爲 「跳轉到/產品/」,當點擊進入/產品/
DIV#一個具有的標題是「跳轉到/思想/」,並在點擊後進入/思維/
相反,發生的事情是:
DIV#一個有一個標題爲「跳轉到/產品/」,當點擊進入/思/(警報說/思/太)
DIV#一個有標題「跳到/思考/」,當點擊去思考/
即div#a結束了錯誤的行爲。我猜這是一些範圍問題,但對我來說,我看不到它,幫助!
在此之後不久,我學習了閉包的真正工作方式,之後我學到了真正的東西JS真的可以通過閱讀Crockford! – Sqoo 2012-05-06 20:05:14
所以真正的答案是使用閉包來強制新的範圍。 – Sqoo 2012-05-06 20:06:06
答案#2太棒了!解決了我的問題:) – Yasser 2012-10-04 06:27:21