2011-06-07 19 views
7

$(document).mousemove() üzerinde yürütülmesi gereken bir işlevim olduğunu varsayalım. Daha sonra, aynı olayda çalışması gereken başka bir işleve sahip olduğuma karar veriyorum. Belki de bu iki işlev birbiriyle ilişkili değildir, bu nedenle modülerlik adına, $(document).mousemove() için iki ayrı işlev olabilir.Aynı jQuery olayı, ayrı işlev

Bu kötü biçim midir? Performans etkileri var mı?

cevap

2

jQuery otomatik bir zincire olayları ekler ve böylece, aynı etkinlik için yinelenen işleyicisi tanımlarını sahip sorun yoktur. İki işleyici tanımını makul bir şekilde birleştirirseniz, bu yaklaşımda kesinlikle yanlış bir şey yoktur, ancak belki de okunabilirlikten başka bir şey yapmanın çok açık bir değeri vardır.

0

Bunu yapamaz mısın? Sorunuzu yanlış anlama am sürece

$(document).mousemove(function(){ 
    callOneFunction(); 
    callTwoFunction(); 
}); 
+0

gerçekten ben bunu yapabilir, sorum ... Nathan Taylor yanıt olarak işaret ettiği gibi :) –

+1

, jQuery bir zincir olayları ekler oldu. Bu yöntemi, hangi işlevlerin çağrıldığını ve hangi sırada olduğunu açıkça seçerim. Özellikle eğer diğerleri sizin kodunuzu okuyorsa (ben bir takım projelerinde çalışıyorum, bu yüzden her yerde aynı olay için olay işleyicileri insanlara deli ederdi) :) –

+0

Evet bu kesinlikle doğrudur. Cevap için teşekkürler. Kodun doğrudan etkinliğe sahip olmasından ziyade, etkinlik içinde çağrılan işlevler yazmaya başlamalıyım. –

0
Tabii

Eğer senin tasarımı ile yanlış bir şey söyleyebilirim tek olayı dinleme 1000 fonksiyonlarını ayarlamak için karar verirseniz, ama benim için iki Funcs sadece Tamam

Ben de, sürdürülebilirliği tutmak için isim alanlı işleyicilerle gider Aziz John bazı durumlarda kullanarak jQuery tasarladım buna değer azından eğer böylece yapmanız bu:

$(elem).bind('mousemove.ns1', funcOne); 
$(elem).bind('mousemove.ns2', funcTwo); 

Eğer mümkün unbind tek tek yanı

$(elem).unbind('mousemove.ns1'); 
$(elem).unbind('mousemove.ns2'); 
vardır bu şekilde

Hatta

$(elem).unbind('.ns1');