【问题标题】:how to check if a link was clicked?如何检查链接是否被点击?
【发布时间】:2012-06-06 08:00:44
【问题描述】:

这是我的问题。我正在编辑一个网站,该网站在从服务器端到 PHP 的循环中生成网站的所有内容,然后我被要求使用 @987654321 操作网站@。

这里的问题是,网站上存在的很多链接标签都没有与之关联的IDs。所以我被要求解决一个问题,如果点击其中一个链接标签,就会发生一些 jQuery 逻辑。

在我的情况下,如果单击带有文本 “查看全部” 的链接标记。我应该执行一些代码执行,但我到底该怎么写呢?

就这么简单吗:

$("a:contains('See All')").click(function() {
  // do something
});

因为这似乎不起作用。有什么帮助吗?

【问题讨论】:

    标签: jquery function click contains


    【解决方案1】:

    精确匹配See All

    $("a")
         .filter(function() {   // apply filter() to for exact text matching
              return $(this).text() == 'See All';
         }).click(function(e) {
              // To prevent page reload you need .preventDefault()
              e.preventDefault();
              alert('hello');
         });
    

    DEMO

    检查 See All 的包含情况(不完全匹配)

    $("a").filter(function() {
        return $(this).text().match('See All'); // a little change here
    }).click(function() {
        alert('hello');
    });
    

    或者直接使用:contains()

    $('a:contains(See All)').on('click', function() {
       alert('Hello');
    });
    

    DEMO

    一些额外说明

    如果您的链接在 DOM 准备好之后生成,那么您需要尝试使用“.on”事件绑定,例如:

    $('#container').on('click', 'a:contains(See All)', function() {
      alert('Hello');
    });
    

    如果客户端使用的是 jQuery v-1.7,请尝试“.delegate”事件,如下所示:

    $('#container').delegate('a:contains(See All)', 'click', function() {
      alert('Hello');
    });
    

    【讨论】:

    • 好的,我明天会检查这个解决方案,看看它是否有效。非常感谢芽。只是一个问题,使用过滤器不会增加太多开销吗?
    • @user1429805 没有开销,它工作得很好检查我的工作示例
    • 谢谢老兄,它就像一个魅力。我可能会使用“text.match()”,因为他们使用的是 jquery 1.6.x 而不是现在支持“on”事件的 jquery 1.7。我想我可以尝试“代表”代替它,我会尝试的。
    • @TylerDurden83 欢迎,伙计,如果您的链接是在 DOM 准备好之后生成的,这意味着在页面加载之后,那么您应该尝试delegate event
    • 嘿“thecodeparadox”,我刚刚尝试了委托代码,它就像一个魅力伙伴。非常感谢。非常感谢您的帮助。谢谢。
    【解决方案2】:

    您是否尝试过删除'See All' 中的'

    另外,为了确保它不会将用户重定向到href 中的链接,请使用e.preventDefault()

    $("a:contains(See All)").click(function(e) {
      e.preventDefault();
      // do something
    });
    

    http://jsfiddle.net/99LMh/

    【讨论】:

    • 如果a 包含See All 2 之类的文本,我认为您使用:contains() 的检查将失败。
    • 我认为您对 e.preventDefault() 的建议很棒,我也可以将其插入其中。非常感谢您的帮助,使用“thecodeparadox”插入您的代码应该会让这个东西像魅力一样工作。
    【解决方案3】:

    如何使用链接缩短服务(例如 Google 的 https://goo.gl/,或点击推文的 clicktotweet.com,5 次免费,之后付费)。使用缩短的链接。

    这将跟踪链接被点击的次数。

    现在你正在寻找什么,没有

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 2022-11-09
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      • 2011-10-28
      相关资源
      最近更新 更多