Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

307
Views
Desplazarse al elemento secundario de un elemento principal desplazable

Tengo un ul desplazable y varios elementos li . Mi objetivo es desplazarme hasta el elemento li con cierta identificación cuando el usuario presiona un botón.

Tengo un código que parece funcionar, pero hay dos problemas

  1. Si me desplazo hacia abajo hasta el final de la lista mientras se carga la página, el botón ya no funciona. Comente y descomente la línea como se menciona en el código para ver a qué me refiero
  2. Si ya estoy en el elemento buscado en la lista, quiero permanecer en el mismo lugar si presiono el botón de desplazamiento.

Supongo que ambos problemas se deben a algunas coordenadas relativas, pero no puedo entender cómo funciona este sistema. ¡Ayudame por favor!

HTML:

 <ul id="container"> <li id="1">stuff1</li> <li id="2">stuff2</li> <li id="3">stuff3</li> <li id="4">stuff4</li> <li id="5">stuff5</li> <li id="6">stuff6</li> <li id="7">stuff7</li> <li id="8">stuff8</li> <li id="9">stuff9</li> <li id="10">stuff10</li> <li id="11">stuff11</li> <li id="12">stuff12</li> <li id="13">stuff13</li> <li id="14">stuff14</li> <li id="15">stuff15</li> <li id="16">stuff16</li> </ul> <button id = 'btn'>Scroll to element with id = 9</button>

JS:

 var $container = $('#container')[0]; // $container.scrollTop = $container.scrollHeight; // If I uncomment the above line, the code does not work any more $('#btn').click(function(){ $container.scrollTop = $('#9').position().top; });

CSS:

 ul { overflow-y: auto; position: relative; height: 300px; width: 300px; background: red; } ul li { margin: 30px; border: solid; }

Ver el JSFiddle

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

El elemento 9 también se colocará en relación con el desplazamiento. Debe agregar el desplazamiento actual a la posición 9, así: http://jsfiddle.net/rck1ow93/2/

 $container.scrollTop = $container.scrollTop+$('#9').position().top;
over 4 years ago · Santiago Trujillo Report

0

Para agregar a la respuesta de Jorge, además de tener en cuenta el desplazamiento, es posible que desee usar .offset() en lugar de .position(), ya que le dará la posición correcta. Así que cambia

 $container.scrollTop = $('#9').position().top;

a

 $container.scrollTop += $('#9').offset().top;

http://jsfiddle.net/t06fjtqd/

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!