Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 父级上的触发器事件从子级发起、冒泡_Javascript_Jquery_Html_Events_Event Handling - Fatal编程技术网

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);