从特定数据属性获取值

时间:2013-03-29 00:37:53

标签: javascript jquery onclick

我正在尝试设置一个使用数据值来保存事件类型的跟踪系统。我的HTML看起来像这样:

<a href="#articles" class="track" data-track="article_search_results">Articles</a>
<a href="#books" class="track" data-track="books_search_results">Books</a>
<a href="#notes" class="track" data-track="notes_search_results">Notes</a>

JQuery看起来像这样:

$(document).delegate('.track', 'click', function(e) {   
    console.log($(this));
    console.log($(this).data("track")); 
});

使用具有类.track的每个元素,我正在尝试从中获取数据跟踪值,但它总是返回undefined。我做错了什么?

更新

我的代码中有图标导致问题:

<a href="#articles" class="track" data-track="article_search_results"><i class="icon-pencil"></i></a>

2 个答案:

答案 0 :(得分:1)

试试这个

           $(document).delegate('.track', 'click', function(e) {   
                console.log($(this).attr("data-track")); 
           });

JsFiddle:http://jsfiddle.net/FZEKC/

答案 1 :(得分:1)

使用attr,您可以从元素返回data-track值,例如:

<强>代码:

$(document).on('click', '.track', function(e) {   
    var dataTrack = $(this).attr("data-track");
});

根据jQuery文档,delegate已被on取代,以上是使用on

的示例

或者,在您的情况下,您可以使用我发现更整洁的click功能,但由您决定:

$(".track").click(function(e) {   
    var dataTrack = $(this).attr("data-track");
});

小提琴:

使用on
http://jsfiddle.net/jUSUK/1/

使用click
http://jsfiddle.net/jUSUK/2/

关于attr的更多信息:

http://api.jquery.com/attr/