17 AĞUSTOS 2010, Salı
&; javascript:void(0);" quot; vs "return false" vs "preventDefault()"
Bazı bağlantı hiç bir şey yapmadan sadece javascript eylemler için yanıt değil ben istediğim zaman bağlantı sayfanın üst kenarına kaydırma önlemek için en iyi yolu nedir ?
Bunu yapmanın bir sürü yolu biliyorum, iyi çalışmıyor gibi görünüyor :
<a href="javascript:void(0)">Hello</a>
ya
<a id="hello" href="#">Hello</a>
<script type="text/javascript>
$(document).ready(function() {
$("#toto").click(function(){
//...
return false;
});
});
</script>
ve hatta :
<a id="hello" href="#">Hello</a>
<script type="text/javascript>
$(document).ready(function() {
$("#toto").click(function(event){
event.preventDefault();
//...
});
});
</script>
Herhangi bir tercihiniz var mı ? neden ? hangi koşullar ?
PS: tabii ki yukarıdaki örnekler jquery kullanıyorsun ama mootools veya prototip için benzerleri var varsayalım.
CEVAP
17 AĞUSTOS 2010, Salı
Etmektedir
javascript:
URL her zaman Kaçınılması gereken bir korku- satır içi olay işleyicisi öznitelikleri parlak değil, ama OK hızlı bir gelişme/biraz test sürüşü için;
- script bağlama, işaretleme temiz bırakarak, genellikle en iyi yöntem olarak kabul edilir. jQuery bu teşvik, ama düz JS herhangi bir kütüphane bunu yapamazsın sebep yok.
Yanıt:
- Bir WordPress kullanmak
return false
preventDefault
stopPropagation
, anlamını, hem ana unsurlar önem veriyorsan farklı olay bildirim almak anlamına gelir; - bir WordPress kullanmak burada saklanıyor ama
preventDefault
/stopPropagation
farklı genelde(returnValue
/cancelBubble
)YANİ yazılmış olması.
Ancak:
- Bir bağlantısı olmayan bir bağlantı var. Herhangi bir bağlantı yok; bir eylem.
<a>
gerçekten bu iş için ideal bir işaretleme değil. Eğer birisi orta-tıklayın, veya yer imi eklemek için çalışırsa yanlış olur, ya da başka herhangi bir bağlantı vardır zorluklar. - İçin durumlarda gerçekten nokta bir şey, ne zaman açar/kapatır başka bir öğe üzerinde sayfa, set bağlantı noktası
#thatelementsid
kullanım ve dikkat çekmeyen dizileri kapmak öğesi KİMLİĞİ bağlantıyı adı. Ayrıca bağlantıyı diğer bağlamlarda yararlı olur belge yüklemelocation.hash
bu öğeyi açmak için kokladık. - Aksi takdirde, sadece bir eylem için hiçbir şey, iyi bir şekilde işaretlemek olacaktır:
<input type="button">
<button type="button">
. CSS ile Eğer bir düğme yerine bir bağlantı gibi görünmek için stil. - Ancak oldukça IE kurtulup, Firefox alamazsın düğmesi tasarımı bazı yönleri vardır. Genellikle önemli değil, ama eğer gerçekten mutlak görsel kontrol gerekirse bir uzlaşma
<span>
yerine kullanmaktır. Bu gerçekten düzgün bir standart olmamasına rağmentabindex
bir mülk-erişilebilir klavye çoğu tarayıcıda bir şekilde yapabilirsiniz. Ayrıca Boşluk veya Girin etkinleştirmek için tuşa basma gibi algılayabilirsiniz. Bu biraz yetersiz, ama yine de oldukça popüler (YANİ, biri için, böyle yapıyor). - Başka bir olasılık
<input type="image">
. Bu saf görüntü düğmeleri için tam bir görsel kontrol, ama sadece düğmeye erişilebilirlik avantajları vardır.
Bunu Paylaş:
Href JavaScript bağlantıları için özni...
Ne "javascript:void(0)" diyo...
Neden "not(True) [False] Doğru mu...
&Quot;sıkı" kullanın; JavaScript, ...
Bir tespit "geçersiz tarih" ...