切换样式:只有当样式在HTML中而不是在CSS中时,显示才有效
Toggle style:display only works when style is in HTML not in CSS
在将CSS样式适当地移动到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停止工作以打开和关闭显示。这是什么?
element.style
包含内联样式的样式,而不是CSS样式表中的样式。您需要使用jQuery("element").css或getComputedStyle来获取值
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"
}
}
希望这就是你想要的!
相关文章:
- 如果文本字段为空,则使用JavaScript应用CSS样式
- FF和Chromium中CSS样式按钮的外观差异
- CSS样式属性留空
- 使用javascript单击同一按钮,在两种样式之间更改css值
- 用CSS在CKEditor中设置预览样式
- Javascript+动态菜单+当前链接样式(CSS)+基于PHP的网站
- 如何使用jQuery转换所有带有动态类的内联样式css
- iFrame 中的实时预览和保存样式.css每 30 秒一次
- 如何更改 jquery UI 数据选择器的样式 (CSS)
- 在Javascript中设置左样式CSS属性以移动滑块
- css+jQuery样式.css切换器,用于新的jQuery版本
- Chrome 29样式/Css问题
- 如何更改工具提示的样式/css
- 字体Awesome与半样式CSS
- Angular2组件样式/css没有被浏览器应用在ngafterviewit中
- 如何改变网页内容,而不删除任何样式/css/图形
- 使用Javascript在不影响打印样式的情况下更改显示样式(CSS)
- 使用 Get Time Javascript 更改样式 CSS
- 自定义下拉列表样式(CSS/JS与ASP.. NET c#连接)
- 为输入类型文件按钮添加禁用样式(css)