【问题标题】:How to apply this jQuery function to a certain class only如何将此 jQuery 函数仅应用于某个类
【发布时间】:2012-05-30 14:29:53
【问题描述】:
$('a').each(function() {
    var clicked = false;
    $(this).bind('click', function() {
        if(!clicked) return !(clicked = true);
    });
});

大家好。我试图弄清楚如何将此函数仅应用于还包含一个名为touch 的类的<a> 元素。换句话说:

函数应用于此:

<a href="#" class="touch">

函数应用于此:

<a href="#">

对不起,我是 jQuery 新手。

【问题讨论】:

    标签: jquery html


    【解决方案1】:

    你需要一个class selector(结合你当前的element selector):

    $('a.touch').each(function() {
        var clicked = false;
        $(this).bind('click', function() {
            if(!clicked) return !(clicked = true);
        });
    });
    

    值得一读 jQuery API(尤其是 selectors section)。以后会为你节省很多时间!

    还值得记住的是,大多数 jQuery 选择器与 CSS 选择器相同。如果你对 CSS 有所了解,也可以将这些知识应用到 jQuery 中。


    另外说明,由于大多数 jQuery 方法适用于匹配集中的每个元素,您可能可以摆脱 each 循环。如果我理解正确,那么您试图阻止每个 a.touch 元素在第一次单击链接时跟随它。如果这是正确的,那么您可以这样做:

    $('a.touch').one("click", function() {
        return false; 
    });
    

    【讨论】:

    • @Shackrock - 是的,就这么简单!我也用您的代码的潜在替代方案更新了我的答案(如果我理解您要这样做的话)。
    • 你是个天才!简化的代码也一样,谢谢!
    【解决方案2】:

    jQuery 使用CSS selectors。将您的选择器更改为 $('a.touch') 以获取具有 touch 类的锚标记,或者将选择器更改为 $('.touch') 以获取具有 touch 类的任何元素。

    【讨论】:

      猜你喜欢
      • 2013-02-24
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-23
      相关资源
      最近更新 更多