El método jQuery .closest () devuelve undefined en dispositivos iOS

El método jQuery .closest () no funciona en dispositivos iOS. Estoy usando .closest() con event.target para detectar si el elemento objective seleccionado tiene un antepasado específico. Lamentablemente, esto regresa y error en dispositivos iOS.


Html

 <ul class="level-1"> <li><a href="#" class="item-1">Level 1 - Item 1</a></li> <li><a href="#" class="item-2">Level 1 - Item 2</a></li> <li><a href="#" class="item-3">Level 1 - Item 3</a></li> </ul> 

jQuery

 $('.item-1').on('touchstart', function(e) { e.preventDefault(); console.log(e.target.closest('.level-1')); }); 

Error

introduzca la descripción de la imagen aquí


El ejemplo en vivo se puede encontrar en jsfiddle .

e.target método más cercano del elemento dom ( e.target es una reference de elemento dom), que es una característica experimental (soportado por solo unos pocos browseres ), necesitas llamar al método jQuery closest () para la compatibilidad entre browseres

 console.log($(e.target).closest('.level-1')); 

También puede usar "$ (esto)" para encontrar el elemento más cercano. Básicamente devuelve un object jquery para llamar a la function más cercana de jquery

 $('.item-1').on('touchstart', function(e) { e.preventDefault(); console.log($(this).closest('.level-1')); });