2012-02-21 75 views
0

我想提出一个HREF的“动作数据”的一些信息,如:如何从标签<a>的行为数据中获取信息?

<a href=# action-data="userid={{g.user._id}}&amp;messageid={{message._id}}" id=reply >reply</a> 

,但如何获得用户ID &信息id回Javascript代码?

​​

+0

您是否控制标记?即你能以任何你想要的方式格式化它吗? – 2012-02-21 12:13:44

+0

是的,我正在修改Flask的minitwit示例代码,我控制它。 – 2012-02-21 12:42:35

回答

3

店不同的看法:

<a href="#"data-userid="{{g.user._id}}" data-messageid="{{message._id}}" id="reply">reply</a> 

jQuery的可以得到这样的:

var messageId = $('#reply').data('messageid'); 

而且,点击事件可以是更短:

$('a#reply').click(function(){ 

}); 

PS:记得用引号,因为你在hrefid

+0

:非常感谢。顺便说一句,我不使用引号,因为烧瓶不兼容,它似乎是一个HTML5功能,不是吗? – 2012-02-21 12:25:14

+2

@BrentJiang:这是正确的,引号不是严格要求。如果你有一定的人物价值观,那么这仍然是一个好习惯。或者正如Mark Pilgrim所说:[除非你是摇滚明星,否则总是引用你的属性值。](http://diveintohtml5.info/peeks-pokes-and-pointers.html)。 – 2012-02-21 12:40:30

1

没有如果你控制了标记,你应该data-前缀属性,而不是与-data后缀他们。此外,它似乎更容易为每个属性的一个属性,而不是解析,那么为什么不:

<a href=# data-userid="{{g.user._id}}" data-messageid="{{ message._id }}" id=reply> 

然后你可以使用jQuery data

var userid = $("a#reply").data("userid"), 
    messageid = $("a#reply").data("messageid"); 
0

我还建议对其他回答者的建议使用不同的标记。但是,如果您无法更改标记,则可以解析像这样的参数:

... 
$('a#reply').click(function() { 
    // parse the 'action-data' attribute of the link 
    var actionData = $(this).attr('action-data'); 
    var params = {}; 
    $.each(actionData.split("&"), function(index, data) { 
     var keyValue = data.split("="); 
     params[keyValue[0]] = keyValue[1]; 
    }); 

    // now you can use params.userid and params.messageid 
    ... 
+0

谢谢,你的回答非常有用,但我没有足够的声望,:( – 2012-02-21 12:32:39