我尝试使用.data从属性中获取值。
HTML
<div class="like" data-postid="903282304865jh"> </div>
JS
$(".like").click(function(event){
var postID = $(event.target).data('postid');
console.log(postID);
});
我在控制台中返回了未定义的内容。这里发生了什么?
答案 0 :(得分:7)
使用$(this)
代替$(event.target)
:
var postID = $(this).data('postid');
如果div中没有其他元素,则代码可以正常工作。
另请考虑将target.event
与this
进行比较:
event.target
启动事件的DOM元素。 read more
this
在jQuery中,被执行的元素通常会传递给jQuery函数的函数参数。可以使用$(this)
将其创建为jQuery元素对象。 read more
您的代码变为:
$(".like").click(function(event){
var postID = $(this).data('postid');
alert(postID);
});
HTML示例如下:
<div class="like" data-postid="903282304865jh"><i>A</i> Test</div>
答案 1 :(得分:4)
将event.target
更改为this
。 event.target
将是被点击的元素,因此它可能是您div的任何子元素。 this
将是您的选择器引用的元素:
$(".like").click(function(event){
var postID = $(this).data('postid');
alert(postID);
});
<强> Working Demo 强>
答案 2 :(得分:1)
$(".like").click(function(event){
var postID = this.attributes['data-postid'].nodeValue
console.log(postID);
});
或强>
$(".like").click(function(event){
var postID = $(this).data('postid')
console.log(postID);
});
答案 3 :(得分:1)
这对我有用:
var target = event.target;
var getData = $(target).data('user-id');