Почему mouseup срабатывает 3 раза за один выбор текста?

Я хочу вызывать функцию после того как был выделен текст на странице.

Делаю так:

$('*').on('mouseup', function( e ) {
        switch ( e.which ) {
      case 1:
        console.log( 'вызываем функцию' );
      break;
    }
});
    
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<body>
  <p>текст для тестирвания</p>
</body>

Как видите функция вызывается три раза.

Почему так? Как это предотвратить?


Ответы (1 шт):

Автор решения: Pilaton

Используя * в качестве селектора, ваша функция будет срабатывать на всем документе, на каждом уровне вложенности, что и происходит.

Если указать в качестве селектора, непосредственно селектор в котором находится текст, срабатывать будет один раз, как и нужно вам.

$('p').on('mouseup', function( e ) {
        switch ( e.which ) {
      case 1:
        console.log( 'вызываем функцию' );
      break;
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<body>
  <p>текст для тестирвания</p>
</body>

→ Ссылка