切换样式:显示仅适用于样式为HTML时不在CSS中

问题描述:

将CSS样式适当地移动到CSS页面时遇到问题。我原来的页面,只是正常工作:切换样式:显示仅适用于样式为HTML时不在CSS中

<span class="faq-answer" data-category="<%=category %>" data-index="<%= i %>" style="display:none;"><%= a %></span> 

function toggleVisible(category, index) { 
    var select_answer = '.faq-answer[data-category="' + category + '"][data-index="' + index + '"]'; 
    var current_display = $(select_answer)[0].style.display; 
    if (current_display === "none") { 
    $(select_answer)[0].style.display = "block" 
    $('.faq-question[data-category="' + category + '"][data-index="' + index + '"]')[0].style.paddingBottom="10px" 
    } else if (current_display === "block") { 
    $(select_answer)[0].style.display = "none" 
    $('.faq-question[data-category="' + category + '"][data-index="' + index + '"]')[0].style.paddingBottom="0px" 
    }; 
} 

但是,一旦我把style="display:none"成一个CSS文件,像这样:

.faq-answer { 
    display:none; 
} 

的JS后停止工作,打开和关闭显示器。这是什么?

+0

您可以创建一个链接的jsfiddle? – 2015-02-11 22:29:30

+0

正如DevPat所述,请访问http://jsfiddle.net。听起来像某种遗传问题。 – Alex 2015-02-11 22:30:50

element.style包含内联样式的样式,而不是CSS样式表中的样式。您将需要使用jQuery("element").cssgetComputedStyle来获取值

JQuery的CSS方法

var dispVal = jQuery(".faq-answer").css("display"); 
 
console.log(dispVal);
.faq-answer { 
 
    display:none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="faq-answer"><div>

的getComputedStyle

var ele = document.querySelector(".faq-answer"); 
 
var style = window.getComputedStyle(ele); 
 
console.log(style.display);
.faq-answer { 
 
    display:none; 
 
}
<div class="faq-answer"></div>

你也可以更简单地使用.is(":visible"),它将返回一个布尔值,如果可见则返回true,否则返回false。

var isVisible = $(".faq-answer").is(":visible"); ; 
 
console.log(isVisible);
.faq-answer { 
 
    display:none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="faq-answer"><div>

您的脚本正在查看元素的style属性。如果您要使用类而不是样式,请创建两个不同的类并切换。

试试这样说:

<span class="faq-answer" data-category="<%=category %>" data-index="<%= i %>" class="faq_answer"><%= a %></span> 

function toggleVisible(category, index) { 
    var select_answer = '.faq-answer[data-category="' + category + '"][data-index="' + index + '"]'; 
    var isDisplayed = !$(select_answer)[0].hasClass("faq-answer"); 
    if (!isDisplayed) { 
    $(select_answer)[0].removeClass('faq-answer'); 
    $('.faq-question[data-category="' + category + '"][data-index="' + index + '"]')[0].style.paddingBottom="10px" 
    } else { 
    $(select_answer)[0].addClass('faq-answer'); 
    $('.faq-question[data-category="' + category + '"][data-index="' + index + '"]')[0].style.paddingBottom="0px" 
    } 
} 

希望这是你在找什么!

+0

你应该解释你已经改变了什么,为什么。 – 2015-02-11 22:42:18

+0

我投了你的评论。发生了什么会在您的评论中清楚地解释,并且我建议添加/删除.faq-answer类。 – bandrei2408 2015-02-11 22:43:57