2012-07-09 24 views
5

Bu iki kod parçası arasındaki fark nedir? Her ikisi de mükemmel çalışıyor, bu yüzden neden .dropdown.data-api işlevini kullanıyorsunuz? İnternetteki isim alanını okudum ama bu konuda net değilim. İsim alanı işlevlerinin ne olduğunu bana söyleyebilir mi? Bir etkinlik için adjQuery'de ad alanı işlevi

$('html').on('click.dropdown.data-api', 
    function() { 
    $el.parent().removeClass('open') 
    }) 
} 

$('html').on('click', 
    function() { 
    $el.parent().removeClass('open') 
    }) 
} 
+0

+1 Beni de merak ettiniz. –

+0

Hiya amit İnşallah yeni bir standart '.on 'olayı olan açılan eklenti hakkında konuşmuyorsunuzdur. Http://stackoverflow.com/questions/11208483/get-error-in-event-handler-for-undefined -Normalize-in-chrome-ve-dropdown-d soda gibi bu soru bir kod '' '' '' '' ' –

cevap

6

Belirli bir olay, diyelim ki, unbind veya onu tetiklemek isteyen gerekir hedeflemesine izin vermektedir. Aynı öğe/öğelere bağlı aynı türden iki etkinliğiniz olduğunu düşünün.

$('.something').on('click', function() { /* do something */ }); 
$('.something').on('click', function() { /* do something else */ }); 

biz ad alanı ya olay olmadığı için

, artık unbind veya bir tetiklemek için zor ama diğeri değil. Şimdi düşünün: Her olay kendi ad alanına sahip bu sefer, şimdi tetikleyebilir veya ikisinden birini kurtarabilir miyim

$('.something').on('click.one', function() { /* do something */ }); 
$('.something').on('click.two', function() { /* do something else */ }); 

Çünkü bakir diğer bırakarak.

$('.something').off('click.one'); //unbind the 'one' click event 
$('.something').trigger('click.two'); //simulate the 'two' click event 

[DÜZENLEME - @jfrej hemen altında işaret ettiği gibi, ad alanları hatta bazen etkinlik türü adını referans gerekmez anlamına gelir. Bu nedenle, her ikisi de tek bir ad alanında bir fare gezintisi ve tıklama olayı varsa, her ikisini de off('.namespace') ile çözebilirsiniz.

+0

enteresan, ben her zaman daha önce her zaman acik içinde olay yöntemini belirterek bunu yaptım, bu daha kolay görünüyor. – worenga

+2

+1 Onu bana döv. jQuery'nin belgeleri burada: [Ad Alanı Gösterilebilen Etkinlikler] (http://docs.jquery.com/Namespaced_Events) – Rup

+0

mükemmel bir örnek. Cevabınızı okuduktan sonra aklımda hiç şüphem yok. teşekkürler Utkanos.nice yolu açıklamak için – Carlos