2016-12-07 17 views
7

Bir javascript üzerinde filtername veri özniteliğini ayarlamak için jQuery kullanıyorum.Veri özniteliği döndürülemiyor

$('#tag-group ul').append('<li><i class="fa fa-times" aria-hidden="true" data-filtergroup="'+filterGroup+'" data-filtername="'+filterName+'"></i>'+text+'</li>'); 

Ben sonra başka onClick tekrar onu almaya çalışıyorum

<li><i class="fa fa-times" aria-hidden="true" data-filtergroup="location" data-filtername="Melbourne"></i> Melbourne</li> 

olarak Tamam ekranda dışarı vermektedir ama geri olarak tanımlanmamış gelir. console log $(this).text(); çalışırken, ancak $(this).data('filtername'); günlüğüne konsol eklerken tanımsızdır. JQuery tarafından oluşturulduğunda dom gizleniyor mu?

$(document).on('click','#sau-filter-tags ul li', function(event){ 
      var text = $(this).text(); 
      var filterName = $(this).data('filtername'); 
      console.log(filterName); //Undefined 
     }); 
+1

üzerine bir etkinlik oluşturmak zorunda (bu)' _that_ bile ne olduğunu bulmak için? Bu, herhangi bir "veri" özelliğine sahip olmayan bir öğe değildir. – Xufox

cevap

7

filtername li i etiketinin özelliğidir. Örnek

$(document).on('click', '#sau-filter-tags ul li i', function(event) { 
    var text = $(this).text(); 
    var filterName = $(this).data('filtername'); 
    console.log(filterName); //Undefined 
}); 

veya this yılında I li olay eklemek ve bulmalıyız:

Sen i etiketi seçmek için ihtiyacın üzerinde niteliğini erişen

$(this).find('i').data('filtername')

1

senin İçerisinde <li> yerine <i> içeriyor. Aşağıdaki deneyin:

$('#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>

2

Sen i etiketi üzerindeki bir veri niteliği hedefliyorsunuz. Yani günlüğü `$ denediniz 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 
});