javascript - 无法从元素中的 data-n 获取数据

标签 javascript jquery

我有这个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);        
}

我得到 data-state未定义 。我通过 $(this).data("state") 进行测试 所以也得到了未定义

有什么问题吗?

最佳答案

这是因为该上下文中的 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 方法。 on 回调中的 this 关键字引用被单击的元素。

$('span.span-link').on('click', function() {
     var id = this.id;
     var tt = $(this).data('data-state');
});

关于javascript - 无法从元素中的 data-n 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30764703/

相关文章:

javascript - 当用户在字段中输入内容时如何更新字段

javascript - 为什么这种拆分会产生重复?

javascript - 将显示从无更改为 block 后如何自动对焦?

javascript - 如何在 d3.js 图中转换多行?

javascript - Angular 格式 yyyy-MM-dd HH :mm datetime string

jquery - 为什么 slick carousel 不能与 browserify 一起使用?

javascript 以编程方式下拉选择菜单

javascript - 在 javascript/jquery 中更改基于 xhttp.readyState 的元素文本

javascript - 为什么 clearInterval 对我的代码不起作用?

javascript - 我可以在 Angular 的 Promise 链中调用函数吗