Terima kasih atas semua jawaban Anda, Tetap saja tidak berfungsi, bisakah Anda membuatnya bekerja dengan document.ready berfungsi
Senthil Kumar Bhaskaran
Mungkin membantu jika Anda memposting potongan kode yang tidak berfungsi.
Hooray Im Helping
Sebenarnya coding saya ada di Rails dan coding saya adalah <% = foo.add_associated_link ('Tambah email', @ project.email.build)%> ketika saya render ke browser saya bisa melihat email tetapi saya tidak bisa menonaktifkannya bahkan saya mencoba dengan pengkodean seperti e.preventDefault () tetapi tidak ada hasil
Senthil Kumar Bhaskaran
Jawaban:
194
Agar jangkar tidak mengikuti yang ditentukan href, saya sarankan menggunakan preventDefault():
Saya mencoba dengan "attr" itu hanya berfungsi pada elemen form bukan pada Anchor tag.
Senthil Kumar Bhaskaran
1
@senthil - preventDefault dianggap sebagai cara 'tepat' untuk melakukan hal ini, melihat edit (link ke yang lain Q + A)
karim79
Sebenarnya coding saya ada di Rails dan coding saya adalah <% = foo.add_associated_link ('Tambah email', @ project.email.build)%> ketika saya render ke browser saya bisa melihat email tetapi saya tidak bisa menonaktifkannya bahkan saya mencoba dengan pengkodean seperti e.preventDefault () tetapi tidak ada hasil
Senthil Kumar Bhaskaran
2
bagaimana cara membalikkan $('a.something').on("click", function (e) { e.preventDefault(); });?
ア レ ッ ク ス
2
Tidak setuju, gunakan CSS "pointer-events: none;" sebaliknya, sama seperti di unswers lainnya.
vitrilo
116
Aplikasi yang sedang saya kerjakan melakukannya dengan gaya CSS dikombinasikan dengan javascript.
a.disabled { color:gray;}
Lalu setiap kali saya ingin menonaktifkan tautan, saya menelepon
$('thelink').addClass('disabled');
Kemudian, di handler klik untuk tag 'thelink' saya selalu menjalankan pemeriksaan hal pertama
Bukankah seharusnya baris terakhir mengatakan "return false;"?
Prestaul
1
Panggilan bagus, Prestaul. Ketika dikaitkan dengan tag <a>, saya menggunakan: <a href="wh whatever" onclick="return disableLink(ini )"> .. lalu: fungsi disableLink (node) {if (dojo.hasClass (node, 'nonaktif') mengembalikan false; dojo.addClass (simpul, 'dinonaktifkan'); mengembalikan benar;} .. ini memungkinkan tautan untuk diklik sekali dan tindakan (kembali benar) dan setelah itu tidak memungkinkan tindakan (kembali false)
Neek
Perhatikan bahwa di handler Anda mungkin harus menggunakan $ (ini) daripada $ ("thelink") karena itu bisa berubah atau pengguna bisa dengan mudah menyalin / menempelkan kode.
Alexis Wilke
2
Sarankan Anda juga menambahkan 'kursor: default' ke gaya yang dinonaktifkan.
Stuart Hallows
40
Saya menemukan jawaban yang saya sukai jauh lebih baik di sini
Saya pikir solusi yang lebih baik adalah dengan mengatur atribut data yang dinonaktifkan pada dan jangkar cek untuk itu di klik. Dengan cara ini kita dapat menonaktifkan jangkar sementara hingga mis. Javascript selesai dengan panggilan ajax atau beberapa perhitungan. Jika kita tidak menonaktifkannya, maka kita dapat dengan cepat mengkliknya beberapa kali, yang tidak diinginkan ...
$('a').live('click',function(){var anchor = $(this);if(anchor.data("disabled")){returnfalse;}
anchor.data("disabled","disabled");
$.ajax({
url: url,
data: data,
cache:false,
success:function(json){// when it's done, we enable the anchor again
anchor.removeData("disabled");},
error:function(){// there was an error, enable the anchor
anchor.removeData("disabled");}});returnfalse;});
Juga dengan pointer-events Anda tidak perlu menyertakan: hover state karena itu adalah pointer event. Anda hanya perlu menyertakan pemilih [yang dinonaktifkan].
Anda tidak pernah benar-benar menentukan bagaimana Anda ingin mereka dinonaktifkan, atau apa yang menyebabkan penonaktifan.
Pertama, Anda ingin mengetahui cara menetapkan nilai ke dinonaktifkan, untuk itu Anda akan menggunakan Fungsi Atribut JQuery , dan memiliki fungsi yang terjadi pada suatu peristiwa , seperti klik , atau pemuatan dokumen.
Untuk situasi di mana Anda harus meletakkan konten teks atau html di dalam tag jangkar, tetapi Anda tidak ingin tindakan apa pun diambil ketika elemen itu diklik (seperti ketika Anda ingin tautan paginator berada dalam keadaan dinonaktifkan karena itu halaman saat ini), cukup href. ;)
<a>3 (current page, I'm totally disabled!)</a>
Jawaban oleh @ michael-meadows memberi saya tip untuk ini, tapi itu masih menangani skenario di mana Anda masih harus / bekerja dengan jQuery / JS. Dalam hal ini, jika Anda memiliki kendali atas penulisan html itu sendiri, cukup x-ing tag href yang perlu Anda lakukan, jadi solusinya adalah HTML murni!
Solusi lain tanpa jQuery finagling yang menjaga href mengharuskan Anda untuk meletakkan # di href, tetapi itu menyebabkan halaman memantul ke atas, dan Anda hanya ingin itu sudah lama dinonaktifkan. Atau membiarkannya kosong, tetapi tergantung pada peramban, itu masih melakukan hal-hal seperti melompat ke atas, dan, itu adalah HTML yang tidak valid menurut IDE. Namun ternyata sebuah atag adalah HTML yang benar-benar valid tanpa HREF.
Terakhir, Anda mungkin berkata: Oke, mengapa tidak membuang a tag sama sekali? Karena sering kali Anda tidak dapat melakukannya, atag digunakan untuk keperluan penataan dalam kerangka CSS atau kontrol yang Anda gunakan, seperti paginator Bootstrap:
kemudian menggunakan jquery Anda dapat melakukan ini ketika Anda perlu menampilkan teks, bukan tautan.
var content = $(".MyLink").text();// or .html()
$(".MyLink").replaceWith("<div>"+ content +"</div>")
Jadi dengan cara ini, kita cukup mengganti tag jangkar dengan tag div. Ini jauh lebih mudah (hanya 2 baris) dan semantik benar juga (karena kita tidak memerlukan tautan sekarang karena itu seharusnya tidak memiliki tautan)
Jawaban:
Agar jangkar tidak mengikuti yang ditentukan
href
, saya sarankan menggunakanpreventDefault()
:Lihat:
http://docs.jquery.com/Events/jQuery.Event#event.preventDefault.28.29
Lihat juga pertanyaan sebelumnya di SO:
jQuery menonaktifkan tautan
sumber
$('a.something').on("click", function (e) { e.preventDefault(); });
?Aplikasi yang sedang saya kerjakan melakukannya dengan gaya CSS dikombinasikan dengan javascript.
Lalu setiap kali saya ingin menonaktifkan tautan, saya menelepon
Kemudian, di handler klik untuk tag 'thelink' saya selalu menjalankan pemeriksaan hal pertama
sumber
Saya menemukan jawaban yang saya sukai jauh lebih baik di sini
Terlihat seperti ini:
Mengaktifkan akan melibatkan pengaturan atribut href
Ini memberi Anda tampilan bahwa elemen jangkar menjadi teks normal, dan sebaliknya.
sumber
sumber
Saya pikir solusi yang lebih baik adalah dengan mengatur atribut data yang dinonaktifkan pada dan jangkar cek untuk itu di klik. Dengan cara ini kita dapat menonaktifkan jangkar sementara hingga mis. Javascript selesai dengan panggilan ajax atau beberapa perhitungan. Jika kita tidak menonaktifkannya, maka kita dapat dengan cepat mengkliknya beberapa kali, yang tidak diinginkan ...
Saya membuat contoh jsfiddle: http://jsfiddle.net/wgZ59/76/
sumber
Jawaban yang dipilih tidak baik.
Gunakan gaya CSS pointer-events . (Seperti yang disarankan Rashad Annara)
Lihat MDN https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events . Ini didukung di sebagian besar browser.
Menambahkan sederhana "dinonaktifkan" ke jangkar akan melakukan pekerjaan jika Anda memiliki aturan CSS global seperti berikut:
sumber
Coba garis di bawah ini
Coz, Bahkan jika Anda menonaktifkan
<a>
taghref
akan bekerja, Anda harus menghapushref
juga.Bila Anda ingin mengaktifkan, coba di bawah garis
sumber
Ini sesederhana return false;
ex.
atau
sumber
Dalam file css
sumber
Jika metode ini dipanggil, tindakan default acara tidak akan dipicu.
sumber
Jika Anda mencoba untuk memblokir semua interaksi dengan halaman Anda mungkin ingin melihat Plugin jQuery BlockUI
sumber
Anda tidak pernah benar-benar menentukan bagaimana Anda ingin mereka dinonaktifkan, atau apa yang menyebabkan penonaktifan.
Pertama, Anda ingin mengetahui cara menetapkan nilai ke dinonaktifkan, untuk itu Anda akan menggunakan Fungsi Atribut JQuery , dan memiliki fungsi yang terjadi pada suatu peristiwa , seperti klik , atau pemuatan dokumen.
sumber
Untuk situasi di mana Anda harus meletakkan konten teks atau html di dalam tag jangkar, tetapi Anda tidak ingin tindakan apa pun diambil ketika elemen itu diklik (seperti ketika Anda ingin tautan paginator berada dalam keadaan dinonaktifkan karena itu halaman saat ini), cukup href. ;)
Jawaban oleh @ michael-meadows memberi saya tip untuk ini, tapi itu masih menangani skenario di mana Anda masih harus / bekerja dengan jQuery / JS. Dalam hal ini, jika Anda memiliki kendali atas penulisan html itu sendiri, cukup x-ing tag href yang perlu Anda lakukan, jadi solusinya adalah HTML murni!
Solusi lain tanpa jQuery finagling yang menjaga href mengharuskan Anda untuk meletakkan # di href, tetapi itu menyebabkan halaman memantul ke atas, dan Anda hanya ingin itu sudah lama dinonaktifkan. Atau membiarkannya kosong, tetapi tergantung pada peramban, itu masih melakukan hal-hal seperti melompat ke atas, dan, itu adalah HTML yang tidak valid menurut IDE. Namun ternyata sebuah
a
tag adalah HTML yang benar-benar valid tanpa HREF.Terakhir, Anda mungkin berkata: Oke, mengapa tidak membuang a tag sama sekali? Karena sering kali Anda tidak dapat melakukannya,
a
tag digunakan untuk keperluan penataan dalam kerangka CSS atau kontrol yang Anda gunakan, seperti paginator Bootstrap:http://twitter.github.io/bootstrap/components.html#pagination
sumber
Jadi dengan kombinasi tanggapan di atas, saya datang dengan ini.
sumber
Jika Anda tidak perlu berperilaku sebagai tag jangkar maka saya lebih suka untuk menggantinya sama sekali. Misalnya jika tag anchor Anda seperti
kemudian menggunakan jquery Anda dapat melakukan ini ketika Anda perlu menampilkan teks, bukan tautan.
Jadi dengan cara ini, kita cukup mengganti tag jangkar dengan tag div. Ini jauh lebih mudah (hanya 2 baris) dan semantik benar juga (karena kita tidak memerlukan tautan sekarang karena itu seharusnya tidak memiliki tautan)
sumber
Nonaktifkan atau Aktifkan elemen apa pun dengan properti yang dinonaktifkan.
sumber