2010-12-31 14 views
18

, ben JavaScript olaylar (submit.rails, click.rails, vs) özel bağlanır dikkat edin. Bu özel '. Ray' olaylarının nerede olduğunu bilen var mı? Rails 3'teki UJS'nin nasıl çalıştığını daha iyi anlamaya çalışıyorum, böylece daha etkin bir şekilde kullanabilirim ...Rails 3 özel JavaScript olayları nerede tanımlanıyor? Ben Raylar 3 jquery-ujs kod bakarken

+0

Bryan mesajlarınızı imzalama durdurmak lütfen - bu stackoverflow politikalarına aykırıdır bu. Teşekkürler! – sethvargo

+0

Whoops, pardon! Yapacak (ya da daha fazla yapmayacağım :). Bana söylediğin için teşekkürler. – Bryan

cevap

19

Bunlar, namespaced events. Onlar için bir tanım yok; click.railsclick aynıdır, ancak rails ile isim alanlı çünkü, sen unbind veya bir elemanda click etkinliklerinin tümünü yürütmesini olmadan Raylar özgü bir olay işleyicileri tetikleyebilir. Örneğin

, bazı element, <div class='foo' data-remote='true'> olduğunu varsayalım ve rails.js Kodunuzda

$("*[data-remote='true']").bind("click.rails", function() { ... }) 

bağlar, ayrıca var:

Şimdi
$(".foo").click(function() { ... }); 

, Raylar çağırmak isteyebilirsiniz bu uzak bir noktada işleyici, ama sadece $(this).click() denilen, o zaman istenmeyen davranışı oluşturabilecek aramaları özel bir de dahil olmak üzere, öğe üzerinde tüm tıklama işleyicileri çağırmak olacaktır. Bunun yerine, $(this).trigger('click.rails')'u arayabilir ve yalnızca tanımlanmış olan işleyici çalıştırılabilir.

+0

Mükemmel ... ad alanının etkin olduklarına dikkat çekmek, olayları önemli ölçüde gidermeye yardımcı olur. Chris teşekkürler! – Bryan

+0

Tamam, ama bekle ... yani '* .rails' olayları nerede tetikleniyor? Onları jquery-ujs içinde görmüyorum ... – Bryan

+0

Düzenli olaylar ve herhangi bir .rails olayı tarafından tetiklenirler. Sadece, sadece raylılar işleyicileri ile özel bir şey yapmak istediğinizde (sadece ray işleyicilerini açma veya normal işleyicileri tetiklemeden tetikleme gibi) ad alanlarının devreye girmesi gibi. Http://docs.jquery.com/Namespaced_Events sayfasına bakın –