Saya baru saja memperbarui jQuery dari 1,8 menjadi 2,1. Tiba-tiba saya menemukan bahwa .live()
berhenti berfungsi.
Saya mendapatkan kesalahan TypeError: $(...).live is not a function
.
Apakah ada metode yang dapat saya gunakan .live()
?
sumber
Saya baru saja memperbarui jQuery dari 1,8 menjadi 2,1. Tiba-tiba saya menemukan bahwa .live()
berhenti berfungsi.
Saya mendapatkan kesalahan TypeError: $(...).live is not a function
.
Apakah ada metode yang dapat saya gunakan .live()
?
.live()
telah dihapus dalam versi 1.9 dan seterusnya.Itu berarti jika Anda meningkatkan dari versi 1.8 dan sebelumnya, Anda akan melihat banyak hal yang melanggar jika Anda tidak mengikuti panduan migrasi di bawah ini. Anda tidak boleh hanya mengganti .live()
dengan .on()
!
Untuk perbaikan cepat / panas di situs langsung, jangan hanya mengganti kata kunci live
dengan on
,
karena parameternya berbeda !
.live(events, function)
harus dipetakan ke:
.on(eventType, selector, function)
Pemilih (anak) sangat penting! Jika Anda tidak perlu menggunakan ini untuk alasan apa pun, setel ke null
.
sebelum:
$('#mainmenu a').live('click', function)
setelah itu, Anda memindahkan elemen anak ( a
) ke .on()
pemilih:
$('#mainmenu').on('click', 'a', function)
sebelum:
$('.myButton').live('click', function)
setelah itu, Anda memindahkan elemen ( .myButton
) ke .on()
pemilih, dan menemukan elemen induk terdekat (lebih disukai dengan ID):
$('#parentElement').on('click', '.myButton', function)
Jika Anda tidak tahu apa yang harus dimasukkan sebagai orang tua, body
selalu berfungsi:
$('body').on('click', '.myButton', function)
Anda dapat menghindari refactoring kode Anda dengan memasukkan kode JavaScript berikut
jQuery.fn.extend({
live: function (event, callback) {
if (this.selector) {
jQuery(document).on(event, this.selector, callback);
}
return this;
}
});
return this;
di akhir fungsi untuk melestarikan kemampuan chainingDokumentasi jQuery API mencantumkan tautan
live()
usang versi 1.7 dan dihapus pada tautan versi 1.9 : .Lebih lanjut dikatakan:
sumber
Port
.live()
penerusan untuk jQuery> = 1.9. Menghindari ketergantungan JS kembali pada.live()
konteks Pemilih DOM yang dioptimalkansumber
.live () sudah tidak digunakan lagi dan sekarang telah dihapus dari jQuery 1.9. Anda harus menggunakan .on ()
sumber
.live dihapus pada 1.9, silakan lihat panduan peningkatan: http://jquery.com/upgrade-guide/1.9/#live-removed
sumber
Perbaikan sangat sederhana yang tidak perlu mengubah kode Anda, cukup tambahkan skrip migrasi jquery, unduh di sini https://github.com/jquery/jquery-migrate/
Ini memasok jquery usang tetapi membutuhkan fungsi seperti "live", "browser" dll
sumber
Saya cenderung tidak menggunakan sintaks .on (), jika tidak perlu. Misalnya, Anda dapat bermigrasi dengan lebih mudah seperti ini:
tua:
baru:
Berikut adalah daftar penangan acara yang valid: https://api.jquery.com/category/forms/
sumber
Jika Anda menggunakan permata jQuery Ruby on Rails '
jquery-rails
dan karena alasan tertentu Anda tidak dapat memperbaiki kode legacy Anda, versi terakhir yang masih mendukung adalah2.1.3
dan Anda dapat menguncinya dengan menggunakan sintaks berikut pada AndaGemfile
:maka Anda dapat menggunakan perintah berikut untuk memperbarui:
Saya harap itu membantu orang lain menghadapi masalah serupa.
sumber