【问题标题】:Attach JQuery click function to link class将 JQuery 点击功能附加到链接类
【发布时间】:2013-08-06 23:34:27
【问题描述】:

我是 jquery 的新手,对如何将点击功能附加到链接类有点困惑。

最初,我将 onClick 函数附加到链接 id 本身如下:

<div class="summary" style="display:none"></div>
<a id="moreAbout" href="#" >More about #{machine.client_name}</a>

<script> 
  "#moreAbout".onClick(function(event) { 
    event.stop();  
    $$('.summary')[0].slide(); 
    $$('.summary')[0].load("/machine");
  });
</script>

并且功能运行良好。 (基本上,您可以单击一个链接来显示和隐藏一个 div)

现在,我需要将相同的功能附加到多个链接。我已经尝试了所有可以找到的技巧,我认为将功能附加到链接类可能存在问题。

我发现的最流行的解决方案如下:

<div class="summary" style="display:none"></div>
<a class="moreAbout" id="alink" "href="#" >More about #{machine.client_name}</a>

<script> 
  $('a.moreAbout').click(function(event) { 
    event.stop();  
    $$('.summary')[0].slide(); 
    $$('.summary')[0].load("/machine");
  });
</script>

而且我似乎无法附加该方法,更不用说确保该功能正常工作了。

任何关于为什么这可能不起作用的见解?

【问题讨论】:

    标签: jquery class onclick sinatra


    【解决方案1】:

    使用索引将其转换为DOM 对象

    slideload 是 jQuery 对象上可用的方法。所以你需要将DOM 再次转换为jQueryObject 才能使其工作。

    也只有一个$ 就足够了。

    $( $('.summary')[0] ) --> 需要再次转换为jQuery对象

    代码

    $('a.moreAbout').click(function(event) { 
        event.preventDefault();  
        var $summary = $( $('.summary')[0] );
        // The DOM object again converted to jQuery object and stored in 
        // $summary variable. 
        // Now you can apply jQuery method for this object
    
        $summary.slide(); 
        $summary.load("/machine");
    });
    

    【讨论】:

    • 非常感谢!我所要做的就是将 slide() 更改为 slideDown() 并且效果很好!感谢您的帮助
    • @KaitlynDornbier.. 很高兴能帮上忙 :)
    【解决方案2】:

    尝试以下方法:

    <script> 
    $(document).ready(function(){ //this makes sure the dom is loaded
      $('a.moreAbout').click(function(event) { 
        event.preventDefault(); //prevent the default action 
        $(this).prev('.summary').slideDown(); //only one $ needed, get the prev parent, 
          //slide is not an event, use slideDown()
        $(this).prev('.summary').load("/machine");
      });
    });
    </script>
    

    【讨论】:

    • 这个解决方案也有效,但让我理解起来有点混乱,只是使用了 $(this).prev 注释。不过,slideDown() 技巧非常棒!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 2016-07-03
    • 2012-06-28
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    相关资源
    最近更新 更多