以编程方式模拟真实点击

时间:2016-01-28 14:13:59

标签: javascript jquery

我正在使用此代码来识别是否以编程方式触发了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
});

2 个答案:

答案 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 } ));