繁体   English   中英

数据属性返回undefined

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM