2011-05-16 76 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