0

我正在尝试建立一个使用数据值来保存事件类型的跟踪系统。我的 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 的每个元素,我试图从中获取数据跟踪值,但它总是返回未定义的。我究竟做错了什么?

更新

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

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

2 回答 2

1

尝试这个

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

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

于 2013-03-29T00:39:42.460 回答
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/

于 2013-03-29T00:39:51.163 回答