2011-05-16 122 views
3

我想獲得一個點擊錨的價值,但我不知道哪個錨點被點擊或如何用jquery鎖定它。我有一個的document.ready功能jQuery獲取錨值

$(document).ready(function() { 
var ActiveBlogStats = $('#BlogSelectList'); 
$('#BlogSelectList').click(function() { 
    alert(ActiveBlogStats.text) 
}); }) 

這裏是它正在

<ul class="submenu" id="BlogSelectList"> 
    <xsl:for-each select="oohru/user/oohblog"> 
    <li> 
     <a> 
     <xsl:attribute name="href">#<xsl:value-of select="normalize-space(blogid)"/></xsl:attribute> 
     <xsl:value-of select="oohblogurl"/> 
     </a> 
    </li> 
    </xsl:for-each> 
<li><a href="AddNewBlog.aspx">+ Create a new oohblog</a></li> 
</ul> 

我怎樣才能得到實際的錨的href被點擊的ID?即使對於在文檔準備好之前不存在的項目,我也沒有看到如何製作document.ready。 我想我可以從URL中獲得#值,因爲當他們點擊一個時,它會更新URL,但我寧願直接從點擊中獲取它。

回答

1

如果你的內容是動態()(或委託())(http://api.jquery.com/live/ | http://api.jquery.com/delegate/

那麼3210

您的代碼看起來是這樣的:

$("#BlogSelectList li a").live('click', function() { 
     //do something 
    }); 
+0

我結束了使用 '$(「#BlogSelectList li a」)。live('click',function(){ alert($(this).attr(「href 「)) });' 這是非常接近你建議它只需要一個li之前錨點,因爲錨點和BlogSelectList之間有一個元素[li] – Jordan 2011-05-16 22:47:41

0

你可以得到在href像這樣的東西:

$("#BlogSelectList").delegate("a", "click", function() { 

    var href = $(this).attr("href"); 
    alert(href); 

}); 

如果你需要從重定向阻止它,你可以這樣做:

$("#BlogSelectList").delegate("a", "click", function(e) { 

    e.preventDefault(); 

    var href = $(this).attr("href"); 
    alert(href); 

}); 
+0

你將要使用[委託()](http://api.jquery.com/delegate),因此它會觸發這是任何錨即使在文檔準備好之後也是如此。 – 2011-05-16 21:55:24

+0

.live()也會起作用。 – SickHippie 2011-05-16 21:57:06

+0

@Brian - delegate()> live() – 2011-05-16 21:58:51

1
$("#BlogSelectList a").click(function(){ 

var href = $(this).attr("href"); 



}); 
+0

不需要使用'.attr()' – jondavidjohn 2011-05-16 21:56:03

+0

問題在於它觸發頁面上的每個錨點而不僅僅是那些在BlogSelectList – Jordan 2011-05-16 22:46:42

+0

現在可以嗎? – DrStrangeLove 2011-05-16 22:52:29