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

201
Views
JQuery en el área de clic: ¿no activa el evento de clic al hacer clic en un elemento secundario específico?

Tengo un bloque HTML que tiene un pequeño ícono X en la esquina. Cuando el usuario hace clic dentro de esta área, llamo a una función, pero NO quiero llamar a esta función al hacer clic en la X que se encuentra dentro de esa área. Aquí está mi ejemplo simplificado:

html:

 <ul id="team_members"> <li class="member"> <span>Some text</span> <span>Some text</span> <span>Some text</span> <i class="icon-remove"></i> </li> </ul>

jquery:

 $("#team_members").on('click', ".member:not(.icon-remove)", function(e) { //some code alert("clicked!"); });

Lo que espero que suceda es que hacer clic en cualquier parte del "miembro" <li> activará mi función onclick, pero cuando haga clic en "icono-eliminar", la función NO se activará, ya que quiero que se active una función diferente allí. .

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

La cadena de selector ".member:not(.icon-remove)" aún coincidirá con el elemento .member , por lo que el oyente aún se ejecutará. Verifique si el elemento en el que se hizo clic, el objetivo, para ver si es el icono o no.

 $("#team_members").on('click', function(event) { if (event.target.matches('.icon-remove')) { // icon clicked return; } //some code alert("clicked!"); );
about 4 years ago · Juan Pablo Isaza Report

0

El problema con su código es que está haciendo coincidir un elemento .member que no es .icon-remove donde lo que quiere es un elemento secundario de .member que no es .icon-remove . Entonces solo necesita un espacio entre .member y :not(.icon-remove) en el selector:

 $("#team_members").on('click', ".member :not(.icon-remove)", function(e) { //some code alert("clicked!"); }); $("#team_members").on('click', ".member .icon-remove", function(e) { //some code alert("deleted!"); });
 .icon-remove:after { content: 'delete'; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <ul id="team_members"> <li class="member"> <span>Some text</span> <span>Some text</span> <span>Some text</span> <i class="icon-remove"></i> </li> </ul>

about 4 years ago · Juan Pablo Isaza 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!