2011-04-02 106 views
2

我在页面上有几个链接,并且当用户点击它时想运行一个JQuery脚本。以前,我在链接中添加了一个唯一的ID,例如如何检查点击链接的类

<a id="user_1" class="mylink"> 

在我的单击事件我那么提取的ID,并在它开始的处理

userid = $(this).attr('id').split('_')[1]; 

现在我有我的页面可能具有相同的id几个环节的问题,当然这是不可能(afaik)。所以我想我必须将它添加为类,对吗?例如

<a class="mylink user_1"> 

这是最好的方法吗?然后,我怎么才能从类中提取用户ID('1')? jQuery脚本当然也应该注意,有一些没有class'user _ ,,,'的链接。 非常感谢提前!

回答

5

这样做最好的方法是自定义data-*属性。这些标准符合HTML5标准,并在比该标准更早的浏览器中普遍使用。

那么你的链接可能是这样的:那么

<a data-user="1" class="mylink"> 

你点击的处理器也可以是这样的:

$('a').click(function(){ 
    var userId = $(this).data('user'); 
}); 

这工作,因为data进口data-*属性。

如果没有data-user属性集,则userId将为undefined

+0

Brillant!我已阅读了jQuery 1.4.3中实现的这个新功能,但我认为它仅限于HTML5。非常感谢!! – K232 2011-04-03 04:27:32

1

this.className,或者如果你想使用jQuery对象做到这一点(有没有很好的理由这样做):$(this).attr('className')

从这个字符串,你可以用正则表达式(/userid_([0-9]+)/)...

提取ID

但是,使用HTML5 data-属性会更好。由于浏览器是很沉得住气未知属性他们不破坏任何东西,并会正常工作与HTML4和XHTML:

<a class="mylink" data-userid="1">---</a> 
... 
var userid = $(this).data('userid'); 

的好处是:如果你把有效的JSON的数据属性,.data('yourAttr')会自动返回一个对象而不是一个字符串。

+0

做工精良,非常感谢! – K232 2011-04-03 04:28:22

0
+0

这实际上是我有的代码,但不是解决方案....?甚至更让人退步,因为这不会从名称中提取ID ... – K232 2011-04-03 04:30:27