带多个事件处理程序的JQuery .on()方法到一个select器
试图找出如何使用具有与之关联的多个事件的特定select器的Jquery .on()方法。 我以前使用.live()方法,但不太清楚如何用.on()完成同样的function。 请参阅下面的代码:
$("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 */ } });
提前致谢!
这是相反的方式 。 你应该写:
$("table.planning_grid").on({ mouseenter: function() { // Handle mouseenter... }, mouseleave: function() { // Handle mouseleave... }, click: function() { // Handle click... } }, "td");
此外,如果你有多个事件处理程序附加到相同的select器执行相同的function,你可以使用
$('table.planning_grid').on('mouseenter mouseleave', function() { //JS Code });
你可以用这种方式组合相同的事件/函数:
$("table.planning_grid").on({ mouseenter: function() { // Handle mouseenter... }, mouseleave: function() { // Handle mouseleave... }, 'click blur paste' : function() { // Handle click... } }, "input");
我从这里学到了一些非常有用和重要的东西 。
链接函数在这种情况下非常有用,它对大多数的jQuery函数都有效,包括函数输出。
它的工作原理是,大多数jQuery函数的输出是input对象集,所以你可以立即使用它,使它更短,更聪明
function showPhotos() { $(this).find("span").slideToggle(); } $(".photos") .on("mouseenter", "li", showPhotos) .on("mouseleave", "li", showPhotos);
尝试使用以下代码:
$("textarea[id^='options_'],input[id^='options_']").on('keyup onmouseout keydown keypress blur change', function() { } );
如果你想在不同的事件上使用相同的function,可以使用下面的代码块
$('input').on('keyup blur focus', function () { //function block })