2012-02-21 55 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