如何通过onclick方法获取HTML元素的data属性?
问题原因
你代码的核心问题是内联onclick事件调用函数时,this的指向错误:
直接写onclick="return AddFeedVotes()"时,函数内部的this默认指向全局window对象,而非你点击的<a>元素,所以$(this)找不到对应元素的data-*属性,自然返回undefined。
解决方案
方案1:修改内联调用逻辑,主动传入当前元素
第一步:修改所有<a>标签的onclick属性,把当前元素作为参数传入函数:
<a ... onclick="return AddFeedVotes(this)"></a>
第二步:修改JS函数,接收传入的元素参数,用参数替换原来的this:
function AddFeedVotes(el) { var vote = $(el).data('datac'); var type = $(el).data('type'); var flagid = $(el).data('flagid'); alert(vote); alert(type); alert(flagid); }
方案2:移除内联onclick,改用jQuery事件绑定(更推荐)
不需要在HTML里写onclick属性,直接通过元素公共类绑定点击事件,此时this会自动指向触发事件的元素:
// 页面加载完成后绑定事件 $(document).ready(function() { // 你的a标签都有btnsnew类,直接用这个类绑定 $('.btnsnew').click(function(e) { e.preventDefault(); // 阻止a标签默认的#跳转行为 var vote = $(this).data('datac'); var type = $(this).data('type'); var flagid = $(this).data('flagid'); alert(vote); alert(type); alert(flagid); }) })
内容的提问来源于stack exchange,提问作者sheetal baveja
相关产品推荐
相关产品推荐

