Jquery 触发一个事件后如何执行函数?

Jquery 触发一个事件后如何执行函数?,jquery,Jquery,我有一个下拉菜单,不是HTML中可用的选择菜单,而是一个基于div的自定义菜单,它显示了另一个div,当它被单击时动态加载。 然后用户可以从中选择一些选项 现在,我希望能够通过编程触发一些菜单选项。 所以基本上: $("#menu").trigger("click"); // open the menu $("#menu").find("....").click(); // find the desired option in the menu who's just been loaded af

我有一个下拉菜单,不是HTML中可用的选择菜单,而是一个基于div的自定义菜单,它显示了另一个div,当它被单击时动态加载。 然后用户可以从中选择一些选项

现在,我希望能够通过编程触发一些菜单选项。 所以基本上:

$("#menu").trigger("click"); // open the menu
$("#menu").find("....").click(); // find the desired option in the menu who's just been loaded after "artificial" click.
这里的问题是jQuery不会立即触发第一次单击。 事实上,我尝试了console.log,但在打印对象之前没有找到任何对象。 如果我设置了一个超时,它会工作,但当然这只是一个希望它能工作的解决办法

解决办法是:

trigger("click, function(){ 
   // second trigger here
});

有什么线索吗?

尝试使用。单击功能,而不是单击菜单的内部单击。

由于内容是动态加载的,我认为您需要一个委派事件:

$(document).on('click', '#menu', function() {

$(this).find("....").trigger('click');
});
或者类似的东西,至少一把小提琴或多一点代码会有帮助

编辑-必须有十几种方法来实现这一点,如果您定义应该一步一步地添加动态内容,然后在其上绑定单击事件,那么看起来您甚至不需要委托事件。但这里有一种方法可以在一系列方法中做到这一点,首先添加一些内容:

$('#menu').one('click', function() {
$('<div id="content"></div>').appendTo('#menu');
});

$('#menu').on('click', '#content', function() {
console.log('new content clicked');
});

$('#menu').trigger('click').find('#content').trigger('click');

从jQuery1.7开始,.live方法在同一个页面上被弃用。我刚刚编辑了正式替换.live的答案。基于这个答案,看起来您可以链接这些触发事件;所以我想你可以这样做。回过头来看。。。您以前是否将代码包装在$document.ready中?我读到的第一个菜单不是动态的,但在doc ready时确实会触发单击。事件处理程序在DOM完全加载后附加,因为我正在AngularJS应用程序的控制器中添加该处理程序。因此,加载view.html,然后执行控制器并在其中执行处理程序。菜单本身我的意思是,显示菜单的按钮从一开始就存在,动态加载的是菜单的内容。现在,我将尝试您回答中的解决方案。我将通过一些测试和一个实例,看看是否可以对其进行一些改进。好的,我现在就来尝试。你能澄清一下授权和连锁之间的区别吗?在实践中,它们看起来是一样的:链接是主动的,委托是被动的。使用第一种方法,您可以对一个元素应用多个方法,而无需每次再次调用该对象。你可以把它们排成一行,就像答案的最后一行。这将触发器、查找和on方法链接起来。委派是通过倾听事件来定义的。与普通/直接事件侦听器的区别在于,委托可以“捕获”动态创建的元素上的事件。在这里,只有当您想点击任何新元素时才需要它。希望这有点帮助。
$('#menu').trigger('click').find('#content').on('load', function() {$(this).trigger('click')});