Javascript 仅获取单击的元素

Javascript 仅获取单击的元素,javascript,jquery,css,ruby-on-rails,haml,Javascript,Jquery,Css,Ruby On Rails,Haml,我试图让下面的代码正常工作,但它总是将类更改为all.tog faq div,而$this无法正常工作。 我试过使用.toggle;还有,用上千种方式切换类,但都不起作用。是否与haml或rails有关 部分观点: - @topics.each do |topic| .title.col-md-4.white-font .red-back %h3.white-font= topic.name %button{class: 'btn btn-sh-grey', id: 'lin

我试图让下面的代码正常工作,但它总是将类更改为all.tog faq div,而$this无法正常工作。 我试过使用.toggle;还有,用上千种方式切换类,但都不起作用。是否与haml或rails有关

部分观点:

- @topics.each do |topic|
.title.col-md-4.white-font
  .red-back
    %h3.white-font= topic.name
    %button{class: 'btn btn-sh-grey', id: 'link-panel', onclick: 'ToggleFaq()'}
      %span.faq-tog Show
  %div.panel-sub.tog-faq.invisible
    -if faq_questions(topic).present?
      - faq_questions(topic).each do |question|
        .faq-con
          %h4.panel.panel-heading.item-name.dark-grey= question.questions
当前jquery代码:

function ToggleFaq() { 
 $('.tog-faq').not(this).addClass('invisible');
 $(this).toggleClass('active');
}
css


任何帮助都会很好

没有代码很难检查:

$('tog-faq').click(function() {
     $(this).toggleClass('togglingClass');
});
如果单击了.tog faq元素,则此代码将切换该元素的类。这不是引用单击的元素。此外,您不应该对多个元素使用相同的id属性,因为您在循环中指定了一个静态id。与使用HTML属性onclick不同,使用纯jQuery进行设置会更容易。假设只需要btn sh grey类的按钮,您可以执行以下操作:

$.each($('.btn-sh-grey'), function(index, elem) {
  $(this).click(function(event) {
    $('.faq-tog').removeClass('active').addClass('invisible');
    $(this).find('.faq-tog').removeClass('invisible').addClass('active');
  });
});

什么代码?请把它寄出去!当您只是调用一个函数时,这将不起作用。函数将不知道调用了什么元素,除非您将其作为参数传入。看看这个,嗯,我想我明白了。。。但是,在没有设置为第一个参数的情况下,如何从.tog faq获取this?因为如果div是display:none,我就不能点击它。对不起,在我完成之前我按了回车键。谢谢!!仍然无法让它工作,但我理解这个问题,关于ID,我曾经将它们用于css目的,就像类一样,在我知道这不是一件好事之前哈哈
$.each($('.btn-sh-grey'), function(index, elem) {
  $(this).click(function(event) {
    $('.faq-tog').removeClass('active').addClass('invisible');
    $(this).find('.faq-tog').removeClass('invisible').addClass('active');
  });
});