我正在使用此代码来识别是否以编程方式触发了click。
如何编辑$('#x').trigger('click')
来模拟真实点击? (hasOwnProperty应返回true' Real')
$('#x').click(function(e) {
if(e.hasOwnProperty('originalEvent')) {
$('#out').append('<li>Real</li>');
} else {
$('#out').append('<li>Unreal</li>');
}
});
$('#y').click(function() {
$('#x').trigger('click'); //how to edit this
});
答案 0 :(得分:1)
基本上你想要的是不可能。一个真正的点击 - 具有所有提升的权限(如window.open
没有被弹出窗口阻止程序阻止)无法模拟。
如果您确实坚持......您的特定情况可能通过以编程方式将click事件分派给元素来解决。但它在很多方面都容易出错。
var event = new Event('click');
$('#x')[0].dispatchEvent(event);
答案 1 :(得分:0)
您可以轻松地为点击功能添加额外参数,而不是向事件对象添加属性:
$('#x').click(function(e, orig) {
if(orig) {
$('#out').append('<li>Real</li>');
} else {
$('#out').append('<li>Unreal</li>');
}
});
$('#y').click(function() {
$('#x').trigger('click', true);
});
否则,如果您坚持要向事件对象添加属性,则需要执行以下操作:
$('#x').trigger($.Event( "click", { originalEvent: true } ));