Etkileşimli bir svg görüntüleyen bir web sayfası oluşturmak istiyorum: birkaç svg kullanılabileceğinden, görüntülenen çeşitli nesneler farklı kimliklere sahip olacaktır, böylece olay dinleyicileri (örneğin bir fare tıklatmasını yakalamak için) dinamik olmalıdır. this snippetBir svg'deki nesneler için olay dinleyicileri nasıl eklenir?
var a = document.getElementById("alphasvg");
a.addEventListener("load",function(){
var svgDoc = a.contentDocument;
var delta = svgDoc.getElementById("delta");
delta.addEventListener("click",function(){alert('hello world!')},false);
},false);
başlayarak
ben (belki belli bir sınıf olan) svg tüm nesneler arasında geçiş için bir yol bulmak ve onlara eşit dinleyicisi eklemek istiyorum.
güncelleme
Yani JQuery 'her' işlevi uygun bir seçenek olabilir, ancak JQuery çok iyi svg DOM işlemez gibi görünüyor. Başka bir seçenek var mı? (Bir JQuery eklentisi gibi?) Eğer mevcut örnek kod burada biraz yapmacık olmakla
// select elements
var elements = Array.from(document.querySelectorAll('svg .selector'));
// add event listeners
elements.forEach(function(el) {
el.addEventListener("touchstart", start);
el.addEventListener("mousedown", start);
el.addEventListener("touchmove", move);
el.addEventListener("mousemove", move);
})
// event listener functions
function start(e){
console.log(e);
// just an example
}
function move(e){
console.log(e);
// just an example
}
a.contentDocument els olmalıdır [i] .contentDocument? –
MichaelScottCuthbert gerçekten değil, tüm örnek yanlıştı, yeniden yazdım. – Duopixel