Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 8782|Atbildi: 0

[JavaScript] Kad pele pārvietojas uz citu slāni div iekšpusē, tā aktivizē peles izslēgšanu

[Kopēt saiti]
Publicēts 17.12.2018 14:57:53 | | | |
Runājot par DIV elementu, iekšpusē ir IMG elements un SPAN elements, neuztraucieties par to, kā šie divi iekšējie elementi ir izkārtoti, tas nav punkts, ko es vēlos apspriest.

Lai sasniegtu dažus specefektus, man ir jāizmanto TD onmouseover un onmouseout notikumi, un, kad es to pārbaudīšu, es atradīšu šādu situāciju:

Kad pele pārvietojas DIV iekšpusē, tiek aktivizēts onmouseover notikums; Pēc tam pārvietojiet peli uz IMG vai SPAN elementu DIV iekšpusē, mēs noteikti nedomājam, ka pele ir pārvietojusies uz DIV ārpusi, bet dīvaini ir tas, ka tiek aktivizēts onmouseout notikums, un nekavējoties tiek aktivizēts arī onmouseover notikums.

Tas nav tas, ko es gribu, tad kā es varu "bloķēt" Javascrip{filtering}t notikumu iejaukšanos, ko iekšējie elementi rada ārējiem elementiem?

Šeit ir divas metodes:

1. iestatīt taimautu

Tā kā pēc tam, kad pele pārvietojas pāri iekšējam elementam un aktivizē ārējā elementa onmouseout notikumu, arī ārējā elementa onmouseover tiks aktivizēts nekavējoties, tāpēc mums tikai jāaizkavē darbība, kas ārējā elementa onmouseout notikumam ir jāizpilda uz īsu laiku, lai palaistu, un pēc tam izpildiet clearTimeout metodi onmouseover notikumā, lai izvairītos no iekšējā elementa izraisītajiem traucējumiem.

Lūdzu, skatiet šo attēlu par konkrēto izpildes procesu (vertikāla punktēta līnija apzīmē laiku):


Šī ir gudra pieeja, jo, kad tiek aktivizēta onmouseout, materiālā metode netiek izpildīta uzreiz, bet gaida īsu laiku. Ja onmouseover notikums tiek aktivizēts uzreiz šajā laikā, tad būtībā ir skaidrs, ka onmouseout notikums tiek aktivizēts iekšējo elementu traucējumu dēļ, tāpēc izmantojiet clearTimeout onmouseover notikumā, lai novērstu aizkavētās metodes izpildi.

2. satur

Veiciet šādu spriedumu, kad esat peles režīmā, un pēc tam izpildiet metodes pamattekstu, kad rezultāts ir patiess:


Izdariet šādu spriedumu, kad esat izslēgts, un pēc tam izpildiet metodes pamattekstu, kad rezultāts ir patiess:

Šeit ir paskaidrojums par iepriekš minēto divu koda rindu nozīmi:

IE visiem HTML elementiem ir satur metodi, kas nosaka, vai pašreizējais elements satur norādīto elementu. Mēs izmantojam šo metodi, lai noteiktu, vai ārējā elementa notikumu izraisa iekšējais elements, un, ja iekšējais elements izraisa nevēlamu notikumu, tad mēs ignorējam šo notikumu.

event.fromElement norāda uz elementu, no kura pele pamet, kad tiek aktivizēti notikumi onmouseover un onmouseout; event.toElement norāda uz elementu, kurā pele ievada, kad tiek aktivizēti notikumi onmouseover un onmouseout.

Tātad iepriekš minēto divu koda rindu nozīme ir:


  • Kad tiek aktivizēts onmouseover notikums, tas nosaka, vai peles atstātais elements ir pašreizējā elementa iekšējais elements, un, ja tā, ignorē šo notikumu;
  • Kad tiek aktivizēts onmouseout notikums, spriediet, vai peles ievadītais elements ir pašreizējā elementa iekšējais elements, un, ja tā, ignorējiet šo notikumu;



Tādā veidā iekšējais elements netraucē ārējā elementa onmouseover un onmouseout notikumiem.

Bet problēma atkal ir tāda, ka pārlūkprogrammas, kas nav IE, neatbalsta satur funkciju, bet tagad, kad mēs zinām satur funkcijas funkciju, mēs varam pievienot šādu kodu, lai pievienotu šādu kodu, lai pievienotu atbalstu pārlūkprogrammām, kas nav IE:


Iepriekš minētās metodes nav saderīgas ar Firefox:

Jautājums ir jQuery:

jQueryPeles lapas izmantošana peles izslēgšanas vietā, lai iepriekš teiktais nenotiktu.

Arī peles pārvietošana tiks aktivizēta atkārtoti, vienkārši izmantojiet peles ievadīšanu.

Ideāls risinājums ~





Iepriekšējo:jQuery saraksts atļauj tikai vienu aktīvu pārbaudi
Nākamo:Tīmekļa lietojumprogrammu ietvars Gobelēns
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com