Bagaimana cara mencegah default dalam metode onclick? Saya memiliki metode di mana saya juga meneruskan nilai khusus
<a href="#" onclick="callmymethod(24)">Call</a>
function callmymethod(myVal){
//doing custom things with myVal
//here I want to prevent default
}
javascript
coure2011
sumber
sumber
onLoaded
menjadino wrap
. Atau cukup tulis markup .html Anda sendiri.preventDefault
, pertanyaannya adalah, bagaimana cara "mencegah klik default" .Menurut saya jawabannya salah! Dia bertanya
event.preventDefault();
kapan Anda membalas salah; itu menyebutevent.preventDefault();
DANevent.stopPropagation();
juga!Anda bisa mengatasinya dengan ini:
<a href="#" onclick="callmymethod(event, 24)">Call</a>
function callmymethod(e, myVal){ //doing custom things with myVal //here I want to prevent default e = e || window.event; e.preventDefault(); }
sumber
window.event
yang tidak selalu tersedia di semua browser.Coba ini (tetapi gunakan tombol untuk kasus seperti itu jika Anda tidak memiliki
href
nilai yang valid untuk degradasi yang anggun )<a href="#" onclick="callmymethod(24); return false;">Call</a>
sumber
return false;
? Apa kita bahkan kembali salah?Anda dapat menangkap acara tersebut dan kemudian memblokirnya dengan preventDefault () - berfungsi dengan Javascript murni
document.getElementById("xyz").addEventListener('click', function(event){ event.preventDefault(); console.log(this.getAttribute("href")); /* Do some other things*/ });
sumber
Letakkan saja "javascript: void (0)", di tempat "#" di tag href
<a href="javascript:void(0);" onclick="callmymethod(24)">Call</a>
sumber
Ini berhasil untuk saya
<a href="javascript:;" onclick="callmymethod(24); return false;">Call</a>
sumber
Kamu dapat memakai:
event.stopPropagation();
https://dom.spec.whatwg.org/#dom-event-stoppropagation
sumber
Cara lain untuk melakukannya adalah dengan menggunakan
event
objek di dalam atributonclick
(tanpa perlu menambahkan argumen tambahan ke fungsi untuk melewatkan acara)function callmymethod(myVal){ console.log(myVal); }
<a href="#link" onclick="event.preventDefault();callmymethod(24)">Call</a>
sumber
Akan terlalu membosankan untuk mengubah penggunaan fungsi di semua halaman html menjadi
return false
.Jadi, berikut adalah solusi teruji yang hanya menambal fungsi itu sendiri:
function callmymethod(myVal) { // doing custom things with myVal // cancel default event action var event = window.event || callmymethod.caller.arguments[0]; event.preventDefault ? event.preventDefault() : (event.returnValue = false); return false; }
Hal ini dengan benar mencegah IE6, IE11, dan Chrome terbaru untuk mengunjungi
href="#"
setelah pengendali kejadian onclick selesai.Kredit:
sumber
Jika Anda perlu memasukkannya ke dalam tag. Bukan solusi terbaik, tapi itu akan berhasil.
Pastikan Anda meletakkan acara onclick di depan href. Hanya bekerja untuk saya seperti ini.
<a onclick="return false;" href="//www.google.de">Google</a>
sumber
Berikan kelas atau id ke elemen tersebut dan gunakan fungsi jquery unbind ();
$(".slide_prevent").click(function(){ $(".slide_prevent").unbind(); });
sumber