我有Span
:
<span class="span-link" id="2" data-state="True" onclick="javascript: changestate(this.id);">Change State</span>
在Javascript函数中我使用此代码获取值:
function changestate(_thingid) {
alert(_thingid);
var tt = $(this).attr("data-state");
alert(tt);
}
undefinded
获得data-state
。我按$(this).data("state")
进行测试
因此得到undefined
。
有什么问题?
答案 0 :(得分:2)
这是因为该上下文中的this
引用了没有任何属性的window
对象。您应该将元素传递给处理程序并使用它而不是this
关键字。
... onclick="changestate(this);"
function changestate(thing) {
var id = thing.id;
var tt = $(thing).attr("data-state");
alert(tt);
}
另一种选择是使用传递的id来选择被点击的元素,在这种情况下这不是一个好主意,因为this
已经引用了被点击的元素。
由于您使用的是jQuery,因此您也可以使用它的on
方法。 this
回调中的on
关键字是指点击的元素。
$('span.span-link').on('click', function() {
var id = this.id;
var tt = $(this).data('data-state');
});
答案 1 :(得分:1)