【问题标题】:Get only the element clicked仅获取单击的元素
【发布时间】:2015-08-13 20:50:31
【问题描述】:

我试图让以下代码工作,但它总是将类更改为我拥有的所有 .tog-faq div,我无法让 $(this) 工作。 我已经尝试过数千种方式使用.toggle();.toggleClass(),但它不起作用。与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

.invisible {
  display: none;
}
.active {
  display: block;
}

任何帮助都会很棒!

【问题讨论】:

  • 什么代码?请张贴!
  • this 在调用函数时不起作用。除非您将其作为参数传递,否则该函数将不知道调用了什么元素。试试看这个api.jquery.com/click
  • 嗯我想我明白了......但是,我怎样才能在不设置为第一个参数的情况下从.tog-faq 获取this?因为如果它是display: none,我无法单击 div

标签: javascript jquery css ruby-on-rails haml


【解决方案1】:

您的this 没有引用单击的元素。此外,您不应该对多个元素使用相同的 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');
  });
});

【讨论】:

  • 谢谢!!仍然无法正常工作,但我了解this 问题,关于 id,我曾经将它们用于 css 目的,就像类一样,在我知道这不是一件好事之前,哈哈
【解决方案2】:

没有代码很难检查:

$('tog-faq').click(function() {
     $(this).toggleClass('togglingClass');
});

如果点击了 .tog-faq 元素,此代码将切换其类

【讨论】:

  • 对不起,我在完成ç_ç之前按Enter键
猜你喜欢
  • 1970-01-01
  • 2012-05-03
  • 2012-11-26
  • 2021-03-28
  • 1970-01-01
  • 2016-01-14
  • 2014-02-23
  • 1970-01-01
相关资源
最近更新 更多