2015-01-19 28 views
7

'daki dokunma olayına birden çok öğe yanıt veriyor Hammer JS kitaplığını kullanarak küçük bir proje üzerinde çalışıyorum ve Chrome Dev Tools emülatöründe bir sorunla karşılaştım ve iki iOS 7 aygıtında hata ayıklama yaparken . Masaüstü tarayıcılarda iyi çalışıyor gibi görünüyor. Fiddle here: http://jsfiddle.net/w80baz5g/5/ ve daha fazla bilgi aşağıda.Mobil Webkit ve Hammer JS

<div> 
    <img class="item" id="item0" src="http://placehold.it/300x300"> 
    <img class="item" id="item1" src="http://placehold.it/300x300"> 
    <img class="item" id="item2" src="http://placehold.it/300x300"> 
</div> 

ve Çekiç JS tap olayı dinlerken:

böyle, öğe grubunu ettik masaüstü tarayıcılarda (Chrome, Safari) içinde her şey iyi görünüyor

function initItems(el) { 
    var itemToTap = new Hammer.Manager(el, itemOptions); 
      itemToTap.add(new Hammer.Tap()); 
      itemToTap.on("tap", function(event) { 
       console.log("tapped: " + event.target); 
     }); 

} 

$(".item").each(function(){ 
    var itemToInit = $(this)[0]; 
    initItems(itemToInit); 
}); 

iken mobilde, sadece üç elemandan ilki, musluk olayına cevap veriyor gibi görünüyor, ancak konsol, üç öğenin hepsine cevap verdiğini gösteriyor? İkinci ve üçüncü elementler hiç cevap vermiyor. Burada

Fiddle: Ben bir şey eksik http://jsfiddle.net/w80baz5g/5/

Am? Bu etkinlikler/öğeler, mobil tarayıcılar tarafından farklı şekilde ele alındı ​​mı? Neden tek tek bir musluk etkinliğine yanıt vermiyorlar?

Çok takdir et!

+1

FYI, Bu sorun için burada bir geçici çözüm gönderdik: http://stackoverflow.com/a/29572912/1339923 – Lambart

cevap

1

yerine:

$(".item").each(function(){ 
    var itemToInit = $(this)[0]; 
    initItems(itemToInit); 
}); 

kullanmayı deneyin:

$(".item[id^='item']")... 

Veya:

$("[id^='item']")... 

Ve ne olduğunu görün.