Saya ingin membuat sebuah tag anchor yang mengeksekusi beberapa JavaScript dan kemudian melanjutkan ke mana href
pun mengambilnya. Memanggil fungsi yang menjalankan JavaScript saya dan kemudian menyetel window.location
atau top.location
ke href
lokasi tidak berfungsi untuk saya.
Jadi, bayangkan saya memiliki elemen dengan id "Foo" di halaman. Saya ingin menulis jangkar yang mirip dengan:
<a href="#Foo" onclick="runMyFunction(); return false;">Do it!</a>
Ketika ini diklik, saya ingin menjalankan runMyFunction dan kemudian melompat halaman ke #Foo
(tidak menyebabkan reload - menggunakan top.location
akan menyebabkannya memuat ulang halaman).
Saran? Saya senang menggunakan jQuery jika dapat membantu di sini ...
javascript
jquery
html
anchor
psikotik
sumber
sumber
return true;
adalah solusinya, tetapi Anda juga dapat meneleponlocation.hash = '#Foo'
. Ini tidak akan memuat ulang halaman.Jawaban:
Hanya
return true
saja?Nilai yang dikembalikan dari
onClick
kode inilah yang menentukan apakah tindakan yang diklik yang melekat pada tautan diproses atau tidak - mengembalikanfalse
berarti tidak diproses, tetapi jika Anda kembalitrue
, browser akan melanjutkan untuk memprosesnya setelah fungsi Anda kembali dan menuju ke yang tepat jangkar.sumber
undefined
yang dianggap salah untuk tujuan ini.<a href="#Foo" onclick="return runMyFunction();">Do it!</a>
dan
function runMyFunction() { //code return true; }
Dengan cara ini Anda akan menjalankan fungsi Anda DAN Anda akan mengikuti tautannya DAN Anda akan mengikuti tautan tepat setelah fungsi Anda berhasil dijalankan.
sumber
Jika tautan hanya mengubah lokasi jika fungsi berjalan berhasil, lakukan
onclick="return runMyFunction();"
dan dalam fungsi Anda akan mengembalikan benar atau salah.Jika Anda hanya ingin menjalankan fungsi, lalu membiarkan tag anchor melakukan tugasnya, cukup hapus
return false
pernyataan tersebut.Sebagai catatan tambahan, Anda mungkin sebaiknya menggunakan event handler sebagai gantinya, karena inline JS bukanlah cara yang sangat optimal untuk melakukan sesuatu.
sumber
Saat melakukan Struktur HTML yang bersih, Anda dapat menggunakan ini.
//Jquery Code $('a#link_1').click(function(e){ e . preventDefault () ; var a = e . target ; window . open ( '_top' , a . getAttribute ('href') ) ; }); //Normal Code element = document . getElementById ( 'link_1' ) ; element . onClick = function (e) { e . preventDefault () ; window . open ( '_top' , element . getAttribute ('href') ) ; } ;
<a href="#Foo" id="link_1">Do it!</a>
sumber