как получить информацию из тега <a>action-data? - PullRequest
0 голосов
/ 21 февраля 2012

Я хочу поместить некоторую информацию в "action-data" href, например:

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

а как вернуть идентификатор пользователя и идентификатор сообщения в код 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;
    });
});

Ответы [ 3 ]

3 голосов
/ 21 февраля 2012

храните его по-другому:

<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 голос
/ 21 февраля 2012

Если вы управляете разметкой, вы должны добавлять к атрибутам 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 голосов
/ 21 февраля 2012

Я также рекомендую рекомендации другого ответчика об использовании другой разметки.Однако, если вы не можете изменить разметку, вы можете проанализировать параметры следующим образом:

...
$('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
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...