Ada yang tahu cara menonaktifkan link di jquery TANPA menggunakan return false;
?
Secara khusus, apa yang saya'm mencoba untuk lakukan adalah menonaktifkan link dari item, melakukan klik pada menggunakan jquery yang memicu beberapa hal, kemudian mengaktifkan kembali bahwa link sehingga jika itu's diklik lagi bekerja sebagai default.
Terima kasih. Dave
UPDATE
Berikut ini's kode. Apa yang perlu dilakukan setelah .diperluas
kelas telah diterapkan adalah untuk mengaktifkan kembali pertemuan link.
$('ul li').click(function(e) {
e.preventDefault();
$('ul').addClass('expanded');
$('ul.expanded').fadeIn(300);
//return false;
});
$('#myLink').click(function(e) {
e.preventDefault();
//do other stuff when a click happens
});
Yang akan mencegah perilaku default hyperlink, yang adalah untuk mengunjungi ditentukan href.
Dari jQuery tutorial:
Untuk klik dan sebagian besar acara-acara lainnya, anda dapat mencegah perilaku default - di sini, berikut link untuk jquery.com
- dengan menyebut acara tersebut.preventDefault() pada event handler
Jika anda ingin preventDefault()
hanya jika kondisi tertentu terpenuhi (sesuatu yang tersembunyi misalnya), anda bisa menguji visibilitas anda ul dengan class diperluas. Jika terlihat (yaitu tidak tersembunyi) link harus api seperti biasa, jika pernyataan tidak akan masuk, dan dengan demikian perilaku default tidak akan dapat dicegah:
$('ul li').click(function(e) {
if($('ul.expanded').is(':hidden')) {
e.preventDefault();
$('ul').addClass('expanded');
$('ul.expanded').fadeIn(300);
}
});
Untuk orang lain yang datang ke sini melalui google seperti saya - di sini's pendekatan lain:
css:
.disabled {
color: grey; // ...whatever
}
jQuery:
$('#myLink').click(function (e) {
e.preventDefault();
if ($(this).hasClass('disabled'))
return false; // Do something else in here if required
else
window.location.href = $(this).attr('href');
});
// Elsewhere in your code
if (disabledCondition == true)
$('#myLink').addClass('disabled')
else
$('#myLink').removeClass('disabled')
Ingat: bukan hanya ini adalah kelas css
class="buttonstyle"
tapi juga dua
class="buttonstyle keluarga"
jadi anda dapat dengan mudah menambahkan dan menghapus kelas-kelas dengan jQuery. Tidak perlu menyentuh href...
Aku cinta jQuery! ;-)
Berikut ini adalah alternatif css/jQuery solusi yang saya sukai untuk terseness dan diminimalkan scripting:
css:
a.disabled {
opacity: 0.5;
pointer-events: none;
cursor: default;
}
jQuery:
$('.disableAfterClick').click(function (e) {
$(this).addClass('disabled');
});
Jika anda pergi href rute, anda dapat menyimpannya
Untuk menonaktifkan:
$('a').each(function(){
$(this).data("href", $(this).attr("href")).removeAttr("href");
});
Kemudian mengaktifkan kembali menggunakan:
$('a').each(function(){
$(this).attr("href", $(this).data("href"));
});
Dalam satu kasus, saya harus melakukannya dengan cara ini karena klik peristiwa itu sudah terikat di tempat lain dan saya tidak memiliki kontrol atas hal itu.
link html contoh:
<!-- boostrap button + fontawesome icon -->
<a class="btn btn-primary" id="BT_Download" target="blank" href="DownloadDoc?Id=32">
<i class="icon-file-text icon-large"></i>
Download Document
</a>
gunakan ini di jQuery
$('#BT_Download').attr('disabled',true);
tambahkan ini ke css :
a[disabled="disabled"] {
pointer-events: none;
}
My fav di "checkout untuk mengedit item dan mencegah -wild wild west klik di mana saja - sementara di checkout" fungsi
$('a').click(function(e) {
var = $(this).attr('disabled');
if (var === 'disabled') {
e.preventDefault();
}
});
Jadi jika saya ingin bahwa semua link eksternal dalam kedua aksi toolbar harus dinonaktifkan sementara di "edit-mode" seperti yang dijelaskan di atas, saya'll menambahkan fungsi edit
$('#actionToolbar .external').attr('disabled', true);
Link contoh setelah api:
<a href="http://goo.gl" target="elsewhere" class="external" disabled="disabled">Google</a>
Dan sekarang anda DAPAT menggunakan dinonaktifkan properti untuk link
Cheers!
Anda harus menemukan anda menjawab di sini.
Terima kasih @dan @Matt selama ini solusi yang elegan.
jQuery('#path .to .your a').each(function(){
var $t = jQuery(this);
$t.after($t.text());
$t.remove();
});
Ini bekerja untuk link yang memiliki atribut onclick set inline. Hal ini juga memungkinkan anda untuk menghapus "return false" dalam rangka untuk mengaktifkannya.
//disable all links matching class
$('.yourLinkClass').each(function(index) {
var link = $(this);
var OnClickValue = link.attr("onclick");
link.attr("onclick", "return false; " + OnClickValue);
});
//enable all edit links
$('.yourLinkClass').each(function (index) {
var link = $(this);
var OnClickValue = link.attr("onclick");
link.attr("onclick", OnClickValue.replace("return false; ", ""));
});