Bagaimana untuk Menentukan sama ada Elemen Input Difokuskan dalam jQuery?

Barbara Streisand
Lepaskan: 2024-11-21 09:47:14
asal
941 orang telah melayarinya

How to Determine if an Input Element is Focused in jQuery?

Cara Menggunakan jQuery untuk Menentukan sama ada Input Difokuskan

Dalam halaman hadapan tapak web, berbilang

elemen menggunakan CSS :hover pseudo-class untuk memaparkan sempadan apabila tetikus melayang di atasnya. Salah satu daripada
elemen mengandungi itu, dengan bantuan jQuery, mengekalkan sempadan apabila mana-mana elemen inputnya mempunyai fokus.

Persediaan ini berfungsi dengan sempurna, kecuali dalam IE6, yang tidak menyokong :legar pada elemen selain tag. Untuk menangani isu ini, jQuery digunakan untuk meniru CSS :hover menggunakan kaedah $(#element).hover().

Walau bagaimanapun, masalah timbul apabila jQuery mengendalikan kedua-dua focus() dan hover() borang. . Apabila elemen input mendapat fokus dan pengguna menggerakkan tetikus masuk dan keluar, sempadan hilang.

Untuk menyelesaikan tingkah laku ini, pertimbangkan untuk menggunakan pernyataan bersyarat. Sebagai contoh, dengan menyemak sama ada sebarang input memfokuskan pada acara keluar tetikus, adalah mungkin untuk mengelakkan sempadan daripada pudar. Memandangkan jQuery tidak mempunyai pemilih :focus, pendekatan alternatif perlu diterokai.

jQuery 1.6

jQuery 1.6 memperkenalkan pemilih :focus, menghapuskan keperluan untuk pelaksanaan tersuai. Hanya gunakan:

$("..").is(":focus")
Salin selepas log masuk

jQuery 1.5 dan Di Bawah

Kaedah yang lebih baharu telah muncul untuk fokus ujian, termasuk pelaksanaan Ben Alman:

jQuery.expr[':'].focus = function( elem ) {
  return elem === document.activeElement && ( elem.type || elem.href );
};
Salin selepas log masuk

Ini mentakrifkan pemilih tersuai, membenarkan penggunaan seperti:

if ($("...").is(":focus")) {
  ...
}
Salin selepas log masuk

Mana-mana Versi jQuery

Untuk mendapatkan semula elemen yang sedang difokuskan:

$(document.activeElement)
Salin selepas log masuk

Untuk memastikan keserasian dengan kedua-dua versi jQuery 1.6 dan lebih rendah:

(function ( $ ) {
    var filters = $.expr[":"];
    if ( !filters.focus ) { 
        filters.focus = function( elem ) {
           return elem === document.activeElement && ( elem.type || elem.href );
        };
    }
})( jQuery );
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menentukan sama ada Elemen Input Difokuskan dalam jQuery?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan