这可能是一个简单的解决方案,但现在我无法弄清楚如何使其工作
$(".a").click(function () {
if ($("#btnCollapse").css('display')!='none')
$("#btnCollapse").click();
});
然后我尝试使用香草js,我知道我错过了什么......
var anchor = document.querySelectorAll(".a");
var button = document.querySelectorAll("#btnCollapse");
function collapseNav() {
anchor.addEventListener('click', function() {
button.style.display="none"
});
button.click();
}
答案 0 :(得分:0)
querySelectorAll()
返回一个元素集合,而不是单个元素,因此您需要循环它。该按钮具有id
,因此您可以使用querySelector()
选择它以获取单个实例。
您在jQuery版本中也没有collapseNav()
函数,因此您的事件处理程序将在加载时添加。
最后逻辑是不一样的。在jQuery中,如果display
none
不是var anchor = document.querySelectorAll(".a");
var button = document.querySelector("#btnCollapse");
anchor.forEach(function(el) {
el.addEventListener('click', function() {
if (button.style.display != 'none')
button.click();
});
});
,则只需点击该按钮。试试这个:
var anchor = document.querySelectorAll(".a");
var button = document.querySelectorAll("#btnCollapse");
Array.from(anchor).forEach(a => {
a.addEventListener('click', function() {
if(button.style.display!="none"){
button.click();
}
});
});
答案 1 :(得分:0)
可以使用closure-in-loop,
完成if (button.style.display != 'none')
button.click();
答案 2 :(得分:0)
直接转换你的" jQuery"代码:
{{1}}
答案 3 :(得分:0)
querySelectorAll
返回一个节点列表,因此您需要遍历其结果。
对于#bntCollapse
使用querySelector
,它将作为单个元素返回。对于id
的元素,如果您需要查找很多元素,则可以使用getElementById
,这比querySelector
要获取样式,请使用window.getComputedStyle
,因为它将返回使用外部CSS设置的样式,而element.style.display
则不会。
var anchors = document.querySelectorAll(".a");
for (var i = 0; i < anchors.length; i++) {
anchors[i].addEventListener('click', function(e){
var btn = document.querySelector("#btnCollapse");
if (window.getComputedStyle(btn,null).getPropertyValue("display") != 'none') {
btn.click();
}
})
}
注意,您可以使用foreach
来循环元素,但是根据IE,Edge和Safari中的方式可能无法正常工作,因此请对其进行彻底测试,因此我使用{{1} }以获得最大的浏览器支持。