我想在href的“action-data”中加入一些信息,例如:
<a href=# action-data="userid={{g.user._id}}&messageid={{message._id}}" id=reply >reply</a>
但是如何获得用户ID和messageid回到Javascript代码?
<script type=text/javascript>
$(function () {
$('a#reply').bind('click', function () {
$.getJSON($SCRIPT_ROOT + '/_get_replies', {
messageid: ??????How to get messageid from href action-data?
userid: ??????How to get userid from href action-data?
}, function (data) {
$('#replies').text(data.result)
});
return false;
});
});
答案 0 :(得分: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:记得使用引号,就像你在href
和id
答案 1 :(得分: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");
答案 2 :(得分: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
...