【问题标题】:intercept click only on "clickable" elements using jquery (or javascript)仅使用 jquery(或 javascript)拦截点击“可点击”元素
【发布时间】:2014-02-13 14:03:31
【问题描述】:

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

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

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

实际上,我已经给文档绑定了一个点击事件,对吧:

$(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') 得到了很好的处理?我的意思是,我不能破坏所有这些页面,只是因为我在开头放了一个 preventdefault,我必须保留这些元素的功能......

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

有什么想法吗?

我的第二个解决方案是写下每一页的那些可点击元素的所有类、ID、名称......但它们有数百个......这有点......嗯......你明白了。

提前致谢。

【问题讨论】:

  • 我打算建议使用 $(document).on("click","[your selector]",function(){}) 但我注意到您的版本限制:(

标签: javascript jquery ajax dom click


【解决方案1】:

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

【讨论】:

  • 不,不应该,这可能是一种方式。它肯定比绑定更有效 :) 我没想到 input[type=....] 不错。
  • 考虑一下...这是否也适用于 click me 元素?在这种情况下,点击是来自“a”还是“span”?
猜你喜欢
  • 2020-02-13
  • 1970-01-01
  • 1970-01-01
  • 2020-02-23
  • 2020-08-07
  • 2021-02-26
  • 2020-01-04
  • 2021-09-04
  • 1970-01-01
相关资源
最近更新 更多