Jak zastavit šíření vázané funkce, nikoli celé události?

Mám funkci kliknutí vázanou na mnoho prvků. Je možné, že někdy tyto prvky mohou sedět jeden v druhém. Událost click je tedy vázána na potomka a také na svého rodiče. Metoda je specifická pro prvek, na který jste klikli. Přirozeně, kvůli bublání událostí, se nejprve spustí událost dítěte a poté rodiče. Nemohu zavolat oběma najednou, protože událost rodiče přepíše událost dítěte. Takže bych mohl použít event.stopPropagation() takže událost obdrží pouze první kliknutý prvek. Problém je v tom, že k prvku jsou také připojeny další události kliknutí, například na tyto prvky používám přetahovací prvek jQuery. Pokud zastavím šíření události kliknutí, přetažení nebude fungovat a následující události kliknutí nebudou volány.

Moje otázka tedy zní:Existuje způsob, jak zastavit bublání událostí metody, kterou událost zavolá, a ne celé události?

Skvělý Johne, ale tady je problém:

<div id="Elm1"><!-- relative -->
 <div class="Elmchildren"></div><!-- absolute-->
 <div class="Elmchildren"></div><!-- absolute-->
 <div class="Elmchildren"></div><!-- absolute-->

 <div id="Elm2"><!-- relative -->
  <div class="Elmchildren"></div><!-- absolute-->
  <div class="Elmchildren"></div><!-- absolute-->
  <div class="Elmchildren"></div><!-- absolute-->
 </div>

</div>

Událost kliknutí je vázána na #Elm1 a #Elm2 . .Elmchildren jsou šířka a výška 100%. Takže jsou to vlastně aktuální cíle.

Odpověď

zkuste něco takového

$(mySelector).click(function(evt) {
  if (evt.target == evt.currentTarget) {
      ///run your code.  The if statment will only run this click event on the target element
      ///all other click events will still run.
  }
});