Rumah  >  Artikel  >  hujung hadapan web  >  Kaedah penggantian selamat untuk kaedah jQuery.position() yang tidak dapat memperoleh value_jquery

Kaedah penggantian selamat untuk kaedah jQuery.position() yang tidak dapat memperoleh value_jquery

WBOY
WBOYasal
2016-05-16 16:09:561284semak imbas

Memanggil kaedah jQuery.position() akan mengembalikan kedudukan relatif kepada elemen induk Dokumentasi rasmi jQuery menerangkan bahawa ia berbeza daripada kaedah .offset() .offset() mengembalikan kedudukan relatif kepada dokumen. manakala .position() mengembalikan kedudukan relatif kepada elemen induk.

Tetapi sebenarnya, semasa penggunaan, kami mendapati bahawa nilai yang dikembalikan oleh .position() selalunya 0. Tetapi hakikatnya bukan 0. Terutamanya dalam pelayar Google Chrome dan IE. Firefox tidak mempunyai masalah ini.

Sebabnya ialah mengambil pelayar berasaskan Webkit (pelayar Google Chrome dan Safari) sebagai contoh, hanya apabila elemen (imej, denyar, dll.) dimuatkan sepenuhnya, penyemak imbas boleh mengakses ketinggian dan lebar elemen ini. Firefox boleh mengakses sifat ini selepas DOM dimuatkan, dan ia tidak perlu mengetahui saiz penuh elemen. Tidak begitu dengan Google Chrome. Oleh itu, dalam penyemak imbas seperti Google/IE, jika anda ingin menggunakan .position() untuk mendapatkan offset elemen, nilai yang anda dapat selalunya ialah nilai awal: 0.

Satu penyelesaian ialah membuat panggilan .position() anda selepas acara $(window).load() menyala, bukannya selepas acara $(document).ready. Tetapi kaedah ini mungkin tidak boleh dipercayai.

Alternatif lain ialah menggunakan .offset() untuk menukar:

Salin kod Kod adalah seperti berikut:

jQuery.fn.aPosition = function() {
ThisLeft = this.offset().left;
ThisTop = this.offset().top;
ThisParent = this.parent();

parentLeft = thisParent.offset().left;
parentTop = thisParent.offset().top;

kembali {
           kiri: kiri-ibubapaKiri ini,
         atas: thisTop-parentTop
};
};


Walaupun ini menghasilkan kod berlebihan, ia lebih dipercayai dan meyakinkan untuk digunakan.
Kenyataan:
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