带有事件的触发元素函数
Trigger element function with event
我做了这个片段,所以你可以知道我真正的问题是什么:
$('#test1').on('touchstart mousedown', function(e){
$('#output').val(e.pageY);
});
$('#test2').on('touchstart mousedown', function(e){
$('#test1').trigger('touchstart mousedown');
});
button {
height: 50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<button id="test1">test1</button>
<button id="test2">test2</button>
<input type="text" id="output">
如您所见,单击button#test1
时它会正确输出值,但是如果我需要从另一个元素触发其操作(在此代码段中,button#test2
)...它不起作用。
我认为e
事件没有通过$.trigger
.
有人知道任何技巧,或者有任何想法吗?提前谢谢。
一个现场小提琴
试试这个:
$('#test1').on('touchstart mousedown', function(e){
$('#output').val(e.pageY);
});
$('#test2').on('touchstart mousedown', function(e){
$('#test1').trigger(e);
});
来自 jQuery trigger()
文档 (http://api.jquery.com/trigger/):
事件对象始终作为第一个参数传递给事件处理程序。参数数组也可以传递给 .trigger() 调用,这些参数也将在事件对象之后传递给处理程序。从jQuery 1.6.2开始,单个字符串或数字参数可以在不包装在数组中的情况下传递。
对于您的代码,这可能如下所示:
$('#test1').on('touchstart mousedown', function(e, triggerParam){
$('#output').val(e.pageY || triggerParam);
});
$('#test2').on('touchstart mousedown', function(e){
$('#test1').trigger('touchstart', e.pageY);
});
但总的来说(我只是提到这一点,因为我认为这是更好的做法)编写一个额外的函数,由听众调用。不要让侦听器处理实际操作。最好让它根据事件委托给其他功能。
使用标记的快速示例:
function updateOutput( input ) {
$("#output").val(input);
}
$('#test1').on('touchstart mousedown', function(e){
updateOutput(e.pageY);
});
$('#test2').on('touchstart mousedown', function(e){
updateOutput(e.pageY);
});
通过这种方式,您将以更快、更全面的方式查看每个侦听器和函数的实际操作。希望对您有所帮助。
你想用触发器传递参数:
var event = jQuery.Event( "touchstart" );
event.pageY = 999;
$('#test1').trigger(event);
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 在函数中添加数组元素的数值
- 如何在DOM元素上按类型构建此函数
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 如何计算每个元素's的高度,并将这些值用作函数中的变量
- Rails/Javascript链接到用于切换多个元素的函数
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- jQuery在元素的上下文中运行函数
- 如何在模板聚合物中使用元素函数
- Append元素在运行两次函数后不显示
- 当元素可见时,jQuery滚动函数会触发一次
- 如何将一个函数附加到一个不存在的元素上
- 带有事件的触发元素函数
- 是否可以从另一个元素访问元素函数?聚合物1.0
- 单击的元素函数参数的值错误
- 为什么不在DOM元素函数上应用工作呢?
- 未定义的错误:创建带有返回HTML元素函数的对象
- node . js,节点.IO -使用"each"迭代元素函数停止服务器
- 将循环变量作为元素函数中的参数传递
- 动态添加的元素函数调用不工作