我有类似以下情况:
<div id="block">
<span data-type="a">a</span>
<span data-type="b">b</span>
<span data-type="c">c</span>
</div>
当点击其中一个跨度时,我想返回数据类型。我试过了:
$('#block').on('click', function(event) {
var text = $('#block').data('type');
return text;
});
然而它总是以未定义的方式回归。任何想法为什么会发生这种情况/正确的解决方案是什么?感谢
答案 0 :(得分:2)
这是因为您的div #block
没有data-type
标签但span
没有。因此,处理span上的click事件。
$('#block span').on('click', function(event) {
var text = $(this).data('type');
console.log(text);
});
答案 1 :(得分:1)
$('#block > span').on('click', function(event) {
var text = $(this).attr('data-type');
return text;
});
答案 2 :(得分:1)
试试这个(Demo):
$('#block').on('click', 'span', function(event) {
var text = $(this).data('type');
return text;
});
答案 3 :(得分:0)
您可以使用attr():
$('#block').on('click', 'span', function(event) {
var text = $(this).attr('data-type');
console.log(text);
});
答案 4 :(得分:0)
看起来它检查div上的数据类型元素,不存在,
您可以为每个范围添加处理程序,以查看单击了哪一个。
例如
$('#block span').on('click', function(event) {
var text = $(this).data('type');
alert(text);
});