Event.preventDefault () vs yanlış qayıtmaq

Bəzi hadisə işləyicilərinin müəyyən bir hadisə başladıldıqdan sonra qaçmaq istədikdə, iki üsuldan birini istifadə edə bilərəm. Mən misallarda jQuery istifadə edəcəyəm, amma bu da düz-JS üçün aiddir:

1. event.preventDefault()

 $('a').click(function (e) { // custom handling here e.preventDefault(); }); 

2. return false

 $('a').click(function () { // custom handling here return false; }); 

Hadisənin yayılmasının qarşısını almaq üçün bu iki yol arasında əhəmiyyətli bir fərq varmı?

Mənim üçün return false; bir metoddan daha sadə, qısa və yəqin ki, daha az səhv meylli. Bu üsulla düzgün işin, mötərizənin və s.

Bundan əlavə, üsulu çağırmaq üçün geri çağırışındakı ilk parametri təyin etməliyəm. Bəlkə bunun qarşısını almaq və bunun qarşısını almaq üçün bir neçə səbəb var? Ən yaxşı yol nədir?

2661
31 авг. RaYell tərəfindən 31 avqustda təyin olundu 2009-08-31 14:58 '09 at 14:58 2009-08-31 14:58
@ 13 cavab

JQuery hadisə işləyicisindən return false e.stopPropagation , keçilən jQuery.Event obyektində e.preventDefault çağırışı və e.stopPropagation ilə eynidır.

e.preventDefault() , hadisənin default olaraq meydana gəlməsini maneə törədəcək, e.stopPropagation() , hadisənin şişkinliyə maneə törətməyəcəyini və return false e.stopPropagation() həm də edəcək. Xahiş edirik, bu davranışın adi (qeyri-jQuery) hadisə işleyicilerindən fərqli olduğuna diqqət yetirirlər. Xüsusilə də, return false kabarcıklardan bir hadisəni dayandırmaz.

Mənbə: John Resig

Href sətrini ləğv etmək üçün event.preventDefault () funksiyasından "return false" üstündən istifadə edən hər hansı bir fayda?

2609
31 авг. Cavab verilir karim79 31 av . 2009-08-31 15:05 '09 saat 15:05 'da 2009-08-31 15:05

Təcrübəmdə, event.preventDefault () funksiyasını qayıtmaq səhvindən istifadə edərkən ən azı bir aydın üstünlük var. Bir məcburi etiketdə bir tıklama hadisəsini ələ keçirin, əks halda istifadəçi cari səhifədən çıxsaydı böyük bir problem olardı. Tıklama işleyiciniz brauzerinizin gezintisini önlemek üçün yanlış kullanırsa, tercümanın geri bildirimde bulunmadığını ve tarayıcının ankara etiketleri üçün varsayılan davranışı yürütmeye davam etme olasılığını açar.

 $('a').click(function (e) { // custom handling here // oops...runtime error...where oh where will the href take me? return false; }); 
border=0

Event.preventDefault () funksiyasından istifadə etmək üstünlüyü işəgötürəndə ilk satır kimi əlavə edə bilərsiniz, beləliklə funksiyanın son xəttinə çatılmadığına baxmayaraq, default davranışın default olaraq işləməyəcəyini təmin etməkdir (məsələn, .).

 $('a').click(function (e) { e.preventDefault(); // custom handling here // oops...runtime error, but at least the user isn't navigated away. }); 
393
23 янв. Jeff Poulton tərəfindən verilmiş cavab Yanvar 23 2011-01-23 01:37 '11 'də 1:37' də 2011-01-23 01:37

Bu, onu çağırdığınız deyil, sual "javascript"; Bu bir jQuery dizayn sual.

JQuery və John Rezig ( karim79 post ) tərəfindən əvvəllər yazılmış bir sitat , hadisə işləyicilərinin ümumiyyətlə necə işləməyinin yanlış anlama mənbəyidir.

Fakt: Saxta dönən bir hadisə işəgötürən, bu hadisə üçün default tədbirin qarşısını alır. Bu tədbirin yayılmasını dayandırmır. Hadisə işləyiciləri həmişə Netscape Navigatorun köhnə günlərindən başlayaraq bu şəkildə işləmişlər.

MDN sənədləri, hadisə işləyicisində işləməyin qayğının necə olduğunu açıqlayır.

JQuery-də baş verənlər hadisə işləyicilərinə nə ilə eyni deyildir. DOM hadisə dinləyiciləri və MSIE bağlı hadisələr fərqli bir məsələdir.

Daha ətraflı oxu üçün, MSDNW3C DOM 2 Hadisə sənədlərində Əlavəyə baxın.

89
21 июня '10 в 0:31 2010-06-21 00:31 Cavab Garrett tərəfindən 21 İyun '10 'da 0:31 2010-06-21 00:31 tərəfindən verilir

Tipik olaraq, ilk seçiminiz ( preventDefault() ) sizə lazım preventDefault() , ancaq siz hansı kontekstdə olduğunuzu və məqsədlərinizin nə olduğunu bilmək lazımdır.

Yanacaq kodunuzu return false; haqqında böyük bir yazı var return false; vs event.preventDefault() vs event.stopPropagation() vs event.stopImmediatePropagation() .

Qeyd. Yuxarıda göstərilən "Yanacağınızı kodlaşdırma" şəklində olduqca uzun müddətdir, səhv 5xx yaradılıb. İnternet arxivində bunun bir surətini tapdım, onu PDF formatında yazdım və onu Dropbox'a yazdım: Arxivli məqalə return false; vs event.preventDefault() vs event.stopPropagation() vs event.stopImmediatePropagation() (PDF)

>
58
09 апр. Cavab JAAulde 09 apr. 2011-04-09 21:32 '11 at 21:32 2011-04-09 21:32

JQuery istifadə edərkən, return false , onu çağırdığınız zaman 3 ayrı əməliyyatı həyata keçirir:

  • event.preventDefault();
  • event.stopPropagation();
  • Geri çağırmağı dayandırın və çağırıldıqda dərhal geri qaytarın.

Daha ətraflı məlumat və nümunələr üçün jQuery Hadisələrinə baxın : Stop (Mis) Return False istifadə .

51
19 февр. 19 Fevralda James Drinkard tərəfindən verilmiş cavab . 2013-02-19 18:54 '13 at 18:54 2013-02-19 18:54

onClick tədbirində bir çox funksiyanı tək bir maddə üçün asmaq olar. false son olacağına necə əmin ola bilərsiniz? preventDefault , digər tərəfdən, mütləq yalnız elementin preventDefault davranışını qarşısını alır.

38
31 авг. Eldar Cəfərovun verdiyi cavab 31 Avqust 2009-08-31 15:02 '09 at 15:02 2009-08-31 15:02

Düşünürəm

event.preventDefault()

- W3c hadisələri ləğv etmək üçün müəyyən edilmiş metoddur.

Bunu hadisələri ləğv etmək üçün W3C spesifikasiyasında oxuya bilərsiniz.

Həmçinin, hər vəziyyətdə qayıdışı yalan istifadə edə bilməzsiniz. Href öznitəsindəki javascript funksiyasını təmin edərkən və yalanı qaytararkən istifadəçi saxta simli bir səhifəyə yönəldiləcəkdir.

18
31 авг. Cavab verilir . 2009-08-31 15:04 '09 at 15:04 'da 2009-08-31 15:04

Bunu etmək üçün ən yaxşı yolu event.preventDefault() istifadə edir, çünki event.preventDefault() işleyicisində bir event.preventDefault() varsa, geri dönən false bəyanat event.preventDefault() və davranış istədiyiniz şeyin əksinə olacaq.

Lakin, kodun istisna etməyəcəyi təqdirdə, istənilən üsullarla gedin.

Hələ false getmək istəsəniz, aşağıda göstərildiyi kimi bütün işləyicilər kodunu bir catch catch blokuna yerləşdirə bilərsiniz:

 $('a').click(function (e) { try{ your code here......... } catch(e){} return false; }); 
13
09 марта '13 в 22:27 2013-03-09 22:27 Cavab Naga Srinu Kapusetti tərəfindən 09 Mart 2013 , 22:27 tarixində verilir

PreventDefault () ilə arasındakı fərq aşağıdakı kimi səhv olur:

preventDefault () : default brauzer davranışını sadəcə olaraq dayandırır.

yanlış qaytarır : onu çağırdığınız zaman 3 ayrı obyekt qoyur:

  • Brauzerlərin default davranışını dayandırır.
  • Bu DOM hadisə yayılmasını maneə törədir.
  • Geri çağırmağı dayandırın və çağırıldıqda dərhal geri qaytarın.

Gərəyinizə uyğun olaraq istifadə edir:

1) Yalnız default browser davranışını aradan qaldırmaq istəyirsinizsə, preventDefault () funksiyasından istifadə edin.

2) Əgər standart brauzerinizin davranışını maneə törətmək və DOM hadisə yayılmasını qarşısını almaq istəyirsinizsə, qayıtmaq yanlış istifadə edin.

0
02 дек. GSB tərəfindən verilən cavab 02 Dekabr. 2017-12-02 22:18 '17 saat 10:18 'da 2017-12-02 22:18

Əsasən, bu şeyi birləşdirən şeydir, çünki jQuery əsasən HTML elementlərinə diqqət yetirən bir quruluşdur, əksər hallarda u mənim qarşısını alır, eyni zamanda balonu yaymağa davam edir.

Beləliklə, sadəcə, jQuery saxta jQuery bərabər olduğunu söyləyə bilərik:

qayıtmaq səhv e.preventDefault və e.stopPropagation edir

Ancaq jQuery və ya DOM ilə əlaqəli funksiyaları bu elementi bir elementdə çalıştırdığınızda da unutmusunuz, əsasən atəşdən, məsələn, default davranışı və hadisə yayılmasının qarşısını alır.

Əsasən, return false; istifadə etməzdən əvvəl return false; əvvəlcə e.preventDefault(); nə olduğunu e.preventDefault();e.stopPropagation(); Eyni zamanda həm də lazım olduğunu düşünsəniz, yalnız istifadə edin.

Beləliklə, əsasən bu kod aşağıda verilmişdir:

 $('div').click(function () { return false; }); 

bu koda bərabərdir :

 $('div').click(function (event) { event.preventDefault(); event.stopPropagation(); }); 
0
18 июля '18 в 14:07 2018-07-18 14:07 Cavab Alireza tərəfindən 18 iyul, 18 saat 14:07 2018-07-18 14:07 tərəfindən verilir

return falseevent.preventDefault() arasındakı əsas fərq, aşağıda göstərilən kodunuzun return false yerinə yetirilməməsi və event.preventDefault() halda, bu ifadədən sonra kodunuzun yerinə yetirilməsidir.

Yanlış yazdığınız zaman pərdə arxasında aşağıdakıları edərsiniz.

 * Stops callback execution and returns immediately when called. * event.stopPropagation(); * event.preventDefault(); 
0
09 февр. Abdullah Şoaib tərəfindən verilmiş cavab 09 fevral. 2018-02-09 11:14 '18 saat 11:14 'də 2018-02-09 11:14' da

Təcrübəmdə fikirlərim hər zaman istifadə etmək daha yaxşıdır

 event.preventDefault() 

Praktiki olaraq, return false bir hadisə return false əvəzinə, bir hadisə göndərilməsini dayandırmaq və ya qarşısını almaq üçün. event.preventDefault() işləyir.

0
29 сент. Cavab verilir Dilip0165 29 sep . 2014-09-29 14:28 '14 14:28 2014-09-29 14:28

e.preventDefault ();

Bu sadəcə maddənin default fəaliyyətini dayandırır.

Məsələn Ex ::

köprüyü URL'yi təqib etməyi qadağan edir, formanı göndərmə düyməsini göndərməyə icazə vermir. Bir çox hadisə işləyicisi olduğunuzda və yalnız bu səbəbdən default tədbirin qarşısını almaq istəyirik və bu səbəbdən bir çox dəfə, bunun üçün funksiyanın () üstündə istifadə etmək lazımdır.

Səbəb: -

e.preventDefault(); istifadə e.preventDefault(); Kodumuzda belə bir şey kodda işləmirsə, o zaman göndərmək və ya icraya icazə vermək və ya yerinə yetirməli olduğunuz hər hansı bir hərəkətə icazə vermək üçün bir keçid və ya formanı icra etməyə imkan verəcəkdir. link verin və ya göndərin və hələ də hadisənin davam etməsinə icazə verin.

 <!DOCTYPE html> <html > 
0
27 апр. Parth Raval tərəfindən verilən cavabı Apr 27 2018-04-27 09:55 '18 'də 9:55' də 2018-04-27 09:55 'də