我想提出一个HREF的“动作数据”的一些信息,如:如何从标签<a>的行为数据中获取信息?
<a href=# action-data="userid={{g.user._id}}&messageid={{message._id}}" id=reply >reply</a>
,但如何获得用户ID &信息id回Javascript代码?
我想提出一个HREF的“动作数据”的一些信息,如:如何从标签<a>的行为数据中获取信息?
<a href=# action-data="userid={{g.user._id}}&messageid={{message._id}}" id=reply >reply</a>
,但如何获得用户ID &信息id回Javascript代码?
店不同的看法:
<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:记得用引号,因为你在href
和id
:非常感谢。顺便说一句,我不使用引号,因为烧瓶不兼容,它似乎是一个HTML5功能,不是吗? – 2012-02-21 12:25:14
@BrentJiang:这是正确的,引号不是严格要求。如果你有一定的人物价值观,那么这仍然是一个好习惯。或者正如Mark Pilgrim所说:[除非你是摇滚明星,否则总是引用你的属性值。](http://diveintohtml5.info/peeks-pokes-and-pointers.html)。 – 2012-02-21 12:40:30
没有如果你控制了标记,你应该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");
我还建议对其他回答者的建议使用不同的标记。但是,如果您无法更改标记,则可以解析像这样的参数:
...
$('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
...
谢谢,你的回答非常有用,但我没有足够的声望,:( – 2012-02-21 12:32:39
您是否控制标记?即你能以任何你想要的方式格式化它吗? – 2012-02-21 12:13:44
是的,我正在修改Flask的minitwit示例代码,我控制它。 – 2012-02-21 12:42:35