2011-12-20 30 views
6

jQuery kullanıyorum ve jqueryUI'den sürüklenebilirim. JQuery'yi 1,7'den 1,7'e değiştirdiğimde clientX ve pageX öznitelikleri, event değişkeninden kayboldu. İşte bir örnek: Verilen örnekte jQuery sürüm 1.6.4 ile değiştirilirsejQuery 1.7 clientX/pageX undefined

http://jsbin.com/ezulas/7/edit

- bu çalışmaya başlar. En son sürümle birlikte - clientX/Y ve pageX/Y çalışmıyor. E = e.originalEvent kullanabileceğimi keşfettim - ama bu uygun bir çözüm gibi görünmüyor.

+0

Bu aynı sorunu yaşıyorum. Bence, onun bağlı olduğu yolla uğraşan yeni bir böcek. Örneğin, şunu denerseniz: $ (document) .bind ('click', işlev (e) {console.log ("e.pageX:" + e.pageX + ", e.pageY:" + e.pageY) ;}); Tamamen iyi çalışıyor. JQuery ile bir hata mı kaydettin? – Matt

+0

Giriş yapmamıştım, birisinin çok büyük bir böcek olduğunu farkettim. – Thinker

+0

Birisi http://bugs.jquery.com/ticket/10729 yaptı gibi görünüyor. Hata hala açık ve eğer düzeltilmesi gerekip gerekmediği konusunda çok fazla tartışma var. – JosephL

cevap

7

event.layerX ve event.layerY: Bu standart dışı özelliklerini 1.7 sürümüne kaldırdık. Her ne kadar normalde bunlar için bir onaylama bildirimi süresi boyunca ürünümüzü geçmemize rağmen, Chrome sürüm 16 , sayfada bir konsol uyarı mesajı taşması oluşturur. Bu nedenle numaralı telefondan derhal kaldırmaya karar verdik. hala bu özellikleri destekleyen platformlarda, bunlar event.originalEvent.layerX ve event.originalEvent.layerY aracılığıyla kullanılabilir.

Kaynak: http://blog.jquery.com/2011/11/03/jquery-1-7-released/

Eğer dragstop olay işleyicisi içinde console.log(e); tüm x/y jQuery 1.7 eksik verileri koordinat görebilirsiniz zaman; ancak event.originalEvent numaralı telefondan erişilebilir. Eğer event nesnenin etrafında bakarsak GÜNCELLEME

Eğer origionalEvent özelliğinde pageX/pageY bulabilirsiniz

: http://jsbin.com/ezulas/13/edit

+1

Cevabınız alakasız geliyor. Soruma, orijinalEvent'i işaret ettim. JQuery belgelerinde, KULLANABİLEN event.pageX ve pageY değişkenleri olduğunu okuyabilirsiniz. Ve 1.7 ile çalışıyorlar. Ama benim özel durumumda değil. – Thinker

+1

Neyi özledim? "E.pageX" i "e.originalEvent.pageX" olarak değiştirirseniz, etkinliğin yatay konumunu elde edersiniz. Daha ne yapmak istiyorsun? – Jasper

+2

jQuery'de, document.pageX'i kullanarak pageX'e erişebildiğimiz dokümanlar yazılır: http://api.jquery.com/event.pageX/ Ama bu işe yaramıyor ve çözümlemekten ziyade yolu merak ediyorum. geçici çözümler kullanın. – Thinker

0
: Burada

$('#test').html(e.originalEvent.pageX+','+e.originalEvent.pageY); 

senin jsbin güncellenmiş versiyonudur

Event Object için jQuery belgelerinde,

diyor

altKey, kabarcıklar, düğme, currentTarget iptal, charCode, clientX, clientY, ctrlKey: değerlerinin bir olaya bağlı olarak tanımlanmamış olsa

aşağıdaki özelliklereda olay nesnesinin kopyalanır ne söylediğini uygun görünüyor

, veri, detay, eventPhase, metakey, offsetX, offsetY, originalTarget, pageX, SayfaY, prevValue, relatedTarget, screenX, screenY, shiftKey, hedef, görünümü. ’da sizin durumunuzda, etkinliğinizde pageX ve pageY tanımlı yoktur.

+1

Ama jQuery 1.6'da tanımlandı, neden şimdi originalEvent.clientX altında tanımlandığını anlamıyorum – Thinker

1

Aynı problemi yaşadım ve uzun bir süredir benzer konuları arıyordum. Şimdi oldukça geç, ama umarım bu, bazı mutlu kodlayıcıları umutsuzluktan kurtarır. Projemde kullandığım jQuery UI Touch Punch dosyasını kontrol ettim ve x/y konumuna nasıl başvurduğunu buldum. Bu sonuçta benim için çalıştı budur: burada Başvuru için

$('.pages').on('touchstart vmousedown', function(e){ 
    var this_event_touch_start_Y = e.originalEvent.changedTouches[0].clientY; 
    var this_event_touch_start_X = e.originalEvent.changedTouches[0].clientX; 
}); 

, ben kullanıyorum tüm jQuery dosyaların bir listesi:

  • jquery-3.1.1.min.js
  • jquery. touchSwipe.min.js
  • jquery-ui.min.js
  • jquery.ui.touch-punch.min.js
  • jquery.mobile-1.4.5.min.js
İlgili konular