我正在尝试设置一个使用数据值来保存事件类型的跟踪系统。我的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>
答案 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
的更多信息: