javascript - 单击时折叠行

标签 javascript html css

我正在处理这段代码,但我在正确实现时遇到了困难。我想将箭头放在问题前面并将点击事件与文本同步。

jsfiddle.net/tx8paL7L/5/

你能帮我解决这个问题吗?

HTML:

<div class="container faq_wrapper">
    <div class="row">
        <div class="span10 offset1">
            <p>
                &nbsp;</p>
            <div class="faq-all-actions">
                <a class="faq-expand">Expand All</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a class="faq-collapse">Collapse All</a></div>
        </div>
    </div>
    <div class="row">
        <div class="span10 offset1">
            <div class="question-wrapper">
                <div class="arrows">
                    &nbsp;</div>
                <div class="big-q">
                    Q</div>
                <div class="question">
                    <div class="arrow"></div><h6>Can I try the software before I buy it?</h6></div>
                <div class="answer-wrapper">
                    <div class="big-a">
                        A</div>
                    <div class="answer">
                        Yes! Simply <a href="/trial">download a free trial</a> and you&#39;ll have instant access to all features for 30 days, absolutely free. We don&#39;t require your credit card details or any commitment.</div>
                </div>
            </div>    
        </div>
    </div>
</div>

CSS:

 .answer-wrapper {
        display: none;
    }

    .arrow {
      margin: 1em;
    }

    .arrow::before {
      position: absolute;
      content: '';
      width: 0;
      height: 0;
      border: .5em solid transparent;
      border-left-color: gray;
      transform-origin: 0 50%;
      transition: transform .25s;
    }

    .arrow.down::before {
      transform: rotate(90deg);
      transition: transform .25s;
    }

JavaScript:

$(document)
    .on('click','.row',function(){ 
        $(this).find('.answer-wrapper').slideToggle();
    })

    .on('click','.faq-expand',function(){
        $('.answer-wrapper').slideDown();
    })

    .on('click','.faq-collapse',function(){
        $('.answer-wrapper').slideUp();
    })

var arr = document.querySelector('.arrow');
arr.addEventListener('click', function(event) {
  event.target.classList.toggle('down');
});
;

最佳答案

这是一个可以使用你的 javascript 的 fiddle ,CSS 仍然需要一些工作:

JSFiddle

基本上您为 jQuery 使用了错误的选择器。

HTML:

<div class="container faq_wrapper">
    <div class="row">
        <div class="span10 offset1">
            <p>
                &nbsp;</p>
            <div class="faq-all-actions">
                <a class="faq-expand">Expand All</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a class="faq-collapse">Collapse All</a></div>
        </div>
    </div>
    <div class="row">
        <div class="span10 offset1">
            <div class="question-wrapper">
                <div class="arrows">
                    &nbsp;</div>
                <div class="big-q">
                    Q</div>
                <div class="question">
                    <div class="arrow"></div><h6>Can I try the software before I buy it?</h6></div>
                <div class="answer-wrapper">
                    <div class="big-a">
                        A</div>
                    <div class="answer">
                        Yes! Simply <a href="/trial">download a free trial</a> and you&#39;ll have instant access to all features for 30 days, absolutely free. We don&#39;t require your credit card details or any commitment.</div>
                </div>
            </div>    
        </div>
    </div>
</div>

jQuery:

$(document).ready(function() {
    .on('click','.row .question-wrapper',function(){ 
        $(this).find('.answer-wrapper').slideToggle();
        $('.arrow').toggleClass('down');
    })

    .on('click','.faq-expand',function(){
        $('.answer-wrapper').slideDown();
        $('.arrow').addClass('down');
    })

    .on('click','.faq-collapse',function(){
        $('.answer-wrapper').slideUp();
        $('.arrow').removeClass('down');
    })

});

关于javascript - 单击时折叠行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30537171/

相关文章:

javascript - HTTP请求条件

javascript - 如何在放置时调整 <p> 元素的大小

javascript - 停止嵌入式 youtube iframe?

php - 如何从 MySQL 数据库中检索图像并显示在 html 标签中

javascript - 调用函数时如何取消绘制矩形

javascript - 制定公式/模式来确定位置

javascript - 如何通过 jQuery 从 div 中删除链接并将其添加到另一个 div 中?

html - 可以相对于容器调整字形大小吗?

css - 渲染错误还是我的错误? : overflow-hidden-zero-height sticking out of Flexbox

javascript - 全屏视频不允许在 Firefox 上滚动