Javascript 父级上的触发器事件从子级发起、冒泡
如果我有一个包含一个表的Javascript 父级上的触发器事件从子级发起、冒泡,javascript,jquery,html,events,event-handling,Javascript,Jquery,Html,Events,Event Handling,如果我有一个包含一个表的,该表中有一个以前的…Chrome开发工具说上有一个事件侦听器,但Firefox开发工具指出它不在上,而是在父上,Chrome在查看此事件的处理程序时也指出了这一点 我想做的是复制点击时发生的事情,复制到按键时发生的事情。在jQuery中,它似乎没有那么简单: $('.timely th').each(function(){ $(this).on('keyup', function(){ $(this).trigger('click');
,该表中有一个以前的…Chrome开发工具说
上有一个事件侦听器,但Firefox开发工具指出它不在
上,而是在父上,Chrome在查看此事件的处理程序时也指出了这一点
我想做的是复制点击时发生的事情,复制到按键时发生的事情。在jQuery中,它似乎没有那么简单:
$('.timely th').each(function(){
$(this).on('keyup', function(){
$(this).trigger('click');
});
});
因为事件处理程序位于.time
上,并且在执行代码时,它正在侦听事件从何处冒出
如何在
的按键上及时复制click事件,并使其上下文从
冒泡?首先,请注意,您的每个循环都没有任何理由(除非您在其中执行未显示的其他操作)。请记住,jQuery是基于集合的,因此,$(“选择器”).on(…)
在集合中的所有元素上设置处理程序
回答您的问题:接受事件参数并使用其target
属性作为要触发的元素:
$('.timely th').on('keyup', function(e) {
$(e.target).trigger('click');
});
或者,如果您想在.time
上处理它,而不是在.time
中的th
上,只需更改选择器并使用委派表单(假设您只希望th
元素使用此表单):
当然,在th
元素上获取keyup
很难;立即想到的唯一方法是在th
中放入input
元素,以便keyup
冒泡:
$('.th')。关于('keyup',函数(e){
控制台日志(“keyup”);
$(e.target).trigger('click');
});
$('.th')。在('click',函数(e)上{
console.log('click');
});代码>
这个jquery魔术可能不会很快奏效
$('.timely th').each(function(){
$(this).on('keyup', function(){
$(this).trigger('click');
});
});
您可以在单击和键控时提取想要使用的函数
function clickKeyupHandler (e) {
// ...
}
// somewhere when you use it use same functions to handle click and keyup
// $('.timely').on('click', clickKeyupHandler);
$('.timely').on('keyup', 'th', clickKeyupHandler);
我知道我能做到。我在写一个我没有写的剧本。它被缩小并模糊了。它在单击时调用return next()
,但该调用和next()函数处于关闭状态,因此我无法从脚本中访问它们。很抱歉没有提供更多详细信息。我之所以使用它们,是因为点击一个
,新的
将通过ajax加载。使用事件委派是有意义的。我首先尝试使用事件委派,但它不起作用,在新th的键控上不会发生任何事情。我将它绑定到一个始终存在的元素。我正在使用一个模糊的第三方脚本。我无法调用click处理程序,因为它位于闭包中。谢谢你的帮助,我会试试的。除非这些细节弄清楚了,你还有什么想法吗?还是什么都没有发生keyup@wordSmith:在th
元素上获取keyup
相对比较困难。我通过在th
中使用输入添加了上述示例。我没有立即想到任何其他方法来在th
上获得keyup
。
function clickKeyupHandler (e) {
// ...
}
// somewhere when you use it use same functions to handle click and keyup
// $('.timely').on('click', clickKeyupHandler);
$('.timely').on('keyup', 'th', clickKeyupHandler);