数据属性返回undefined
问题描述:
我正在使用jQuery在onClick上设置数据属性filtername
,它工作正常。数据属性返回undefined
$('#tag-group ul').append('<li><i class="fa fa-times" aria-hidden="true" data-filtergroup="'+filterGroup+'" data-filtername="'+filterName+'"></i>'+text+'</li>');
它呈现出来的画面OK作为
<li><i class="fa fa-times" aria-hidden="true" data-filtergroup="location" data-filtername="Melbourne"></i> Melbourne</li>
我然后尝试再次把它捡起来对另一个的onClick上,但它回来为未定义。当我console log $(this).text();
它的工作原理,但是当我控制台日志$(this).data('filtername');
它是未定义的。如果它是由jQuery生成的,dom会隐藏它吗?
$(document).on('click','#sau-filter-tags ul li', function(event){
var text = $(this).text();
var filterName = $(this).data('filtername');
console.log(filterName); //Undefined
});
答
filtername
是李i
标签的属性。
您需要选择i
标签:
$(document).on('click', '#sau-filter-tags ul li i', function(event) {
var text = $(this).text();
var filterName = $(this).data('filtername');
console.log(filterName); //Undefined
});
,或者您需要在this
事件附加到里,找到我,例:
$(this).find('i').data('filtername')
答
您正在访问的属性您包含<li>
而不是<i>
里面。请尝试以下操作:
$('#sau-filter-tags li').on('click', function() {
var i = $(this.firstElementChild)
var text = i.text()
var filterName = i.data('filtername')
console.log(filterName) //=> 'Melbourne'
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<li><i class="fa fa-times" aria-hidden="true" data-filtergroup="location" data-filtername="Melbourne"></i> Melbourne</li>
答
您在i
标签瞄准数据属性。所以你必须创建一个事件i
$(document).on('click','#sau-filter-tags ul li i', function(event){
var text = $(this).text();
var filterName = $(this).data('filtername');
console.log(filterName); //Undefined
});
您是否尝试过记录'$(this)'来查明_that_甚至是什么?它不是具有“数据”属性的元素。 – Xufox