无法在jQuery中触发click元素

时间:2015-08-06 12:55:22

标签: javascript jquery

我在网页中有一些要模拟点击的元素。可以通过以下逻辑轻松单击同一页面中的其他元素:

$('.someClass').trigger('click');

但是如果我尝试使用特定元素,它就不起作用了。 我尝试向无法单击的元素添加一个单击处理程序,以查看是否可以反向= 捕获一个单击而不是触发一个

$('.someClass').on('click', function (event) {
   console.log('element was clicked');
});

有效。这意味着:选择器是正确的,元素存在于DOM中。但为什么我的点击没有效果?

我尝试了以下所有内容但没有成功:

点击元素所在的位置:

function simulateClick(x, y) {
    $(document.elementFromPoint(x, y)).click();
}

var element = $('.someClass')[0];
var bodyRect = document.body.getBoundingClientRect(),
    elemRect = element.getBoundingClientRect(),
    voffset   = elemRect.top - bodyRect.top;
    hoffset = elemRect.left - bodyRect.left;

console.log('Element is ' + voffset + ' vertical pixels from <body>');
console.log('Element is ' + hoffset + ' horizontal pixels from <body>');
simulateClick(hoffset, voffset);

首先解除所有事件的绑定:

$('.someClass').unbind();
$('.someClass').trigger('click');

使用vanilla JS点击:

$('.someClass')[0].click();

对我来说很明显,页面以某种方式阻止并阻止对此元素的所有点击,但我怎样才能找到对此负责的机制?该网站使用混淆的JS,我不知道如何规避它?

有什么想法吗? (毕竟^^客户端在我的领域)

2 个答案:

答案 0 :(得分:0)

事件可能不是通过jquery绑定的,而是绑定在元素上。我不确定那是怎么回事,但这对我没用:

$('.mycls:eq(0)').trigger('click');

但是这样做了:

document.querySelector('.mycls').click();

答案 1 :(得分:-1)

为要模拟单击的元素添加单击处理程序。

$('.myelementsclass').bind('click', function() { 
    alert($(this)) 
});

然后使用您的逻辑触发点击:

$('.myelementsclass').trigger('click');