[英]Data attribute is returning undefined
我正在使用jQuery在onClick上设置数据属性filtername
,工作正常。
$('#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
是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
,例如:
$(this).find('i').data('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
});
您正在访问包含<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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.