Метод JQuery.on() с несколькими обработчиками событий для одного селектора

Попытка выяснить, как использовать метод JQuery.on() с определенным селектором, который имеет несколько связанных с ним событий. Ранее я использовал метод .live(), но не совсем уверен, как выполнить тот же подвиг с .on(). См. Мой код ниже:

$("table.planning_grid td").live({
  mouseenter:function(){
     $(this).parent("tr").find("a.delete").show();
  },
  mouseleave:function(){
     $(this).parent("tr").find("a.delete").hide();        
  },
  click:function(){
    //do something else.
  }
});

Я знаю, что я могу назначить несколько событий, вызвав:

 $("table.planning_grid td").on({
    mouseenter:function(){  //see above
    },
    mouseleave:function(){ //see above
    }
    click:function(){ //etc
    }
  });

Но я считаю, что правильное использование .on() будет таким:

   $("table.planning_grid").on('mouseenter','td',function(){});

Есть ли способ сделать это? Или что здесь лучше всего? Я попробовал код ниже, но не кубик.

$("table.planning_grid").on('td',{
   mouseenter: function(){ /* event1 */ }, 
   mouseleave: function(){ /* event2 */ },
   click: function(){  /* event3 */ }
 });

Спасибо заранее!

Ответ 1

Это наоборот. Вы должны написать:

$("table.planning_grid").on({
    mouseenter: function() {
        // Handle mouseenter...
    },
    mouseleave: function() {
        // Handle mouseleave...
    },
    click: function() {
        // Handle click...
    }
}, "td");

Ответ 2

Кроме того, если у вас было несколько обработчиков событий, прикрепленных к тому же селектору, выполняющему ту же функцию, вы можете использовать

$('table.planning_grid').on('mouseenter mouseleave', function() {
    //JS Code
});

Ответ 3

Я узнал что-то действительно полезное и фундаментальное из здесь.

Функции

chaining очень полезны в этом случае, которые работают с большинством функций jQuery, включая вывод функции on.

Это работает, потому что вывод большинства функций jQuery - это набор входных объектов, поэтому вы можете сразу их использовать и сделать его короче и умнее

function showPhotos() {
    $(this).find("span").slideToggle();
}

$(".photos")
    .on("mouseenter", "li", showPhotos)
    .on("mouseleave", "li", showPhotos);

Ответ 4

И вы можете комбинировать те же события/функции таким образом:

$("table.planning_grid").on({
    mouseenter: function() {
        // Handle mouseenter...
    },
    mouseleave: function() {
        // Handle mouseleave...
    },
    'click blur paste' : function() {
        // Handle click...
    }
}, "input");

Ответ 5

Если вы хотите использовать одну и ту же функцию в разных событиях, можно использовать следующий блок кода

$('input').on('keyup blur focus', function () {
   //function block
})

Ответ 6

Попробуйте использовать следующий код:

$("textarea[id^='options_'],input[id^='options_']").on('keyup onmouseout keydown keypress blur change', 
  function() {

  }
);