拦截使用jquery(或javascript)仅点击“可点击”元素

时间:2014-02-13 14:03:31

标签: javascript jquery ajax dom click

美好的一天。 我今天遇到了这个问题:让我们假设我有数百页,“几乎”相同的结构(但不是强制性的)。这个页面已经完成,我只能查看它们(无法以任何方式编辑html)。 此外,在所有(好的,大多数)中,包括jquery,但此时包括1.5。

我想做的是跟踪(通过ajax调用)页面上的所有点击,然后才真正做“某事”。

我在页面开始时有一个注入点,就在包含jquery之后(只是为了知道它)

实际上,我已将click事件绑定到文档,对此:

$(document).bind('click', function(evt) {
    evt.preventDefault();
    alert(evt.target.id+" and "+evt.target.class+" and "+evt.target.name);
    //ajax call will be here
    try{
    evt.trigger('click');
    }catch(e){}
});

结果是非常前进的...页面上的任何点击都会触发警报,在某些情况下我会获得一个ID,有时我会得到一个类......或者未定义结束等等。这个解决方案的问题在于每次单击都是绑定的,这实际上是一种盲目的方式,我希望只能点击那些“可点击”的元素,例如链接,按钮,复选框......同时忽略div,html元素......身体,等等。

是否有一个技巧我只能选择那些允许点击它们的元素?还是不可能?第二个问题是...... preventDefault是通过在evt.trigger('click')末尾添加来以良好的方式处理的吗?我的意思是,我无法打破所有这些页面,因为我在开始时设置了一个防止默认,我必须保留这些元素的功能......

我不是在寻找一个开箱即用的解决方案,我只是想了解它是否可能......或者是否有一些黑客,作弊,以及......我可以用它来实现这一点。

任何想法?

我的第二个解决方案是记下所有类,ID,每个页面中那些可识别元素的名称......但它们是数百......而且这有点......好吧......你明白了。

提前感谢。

1 个答案:

答案 0 :(得分:2)

是一个像$('input[type=button],input[type=submit],input[type=reset], button, a').bind(...这样的jQuery选择器吗?